การสร้าง REST API ที่กำหนดเอง


10

ฉันมีเว็บไซต์ WordPress.org ที่ให้ผู้ใช้ป้อนข้อมูลค้นหาฐานข้อมูลที่กำหนดเองและแสดงผลลัพธ์ของแบบสอบถาม ฉันใช้งานคลาส wpdbได้ ตอนนี้ฉันกำลังพยายามทำให้แอป Android ทำงานได้

จากสิ่งที่ฉันเข้าใจการสร้างเซิร์ฟเวอร์ RESTful คือ 'แนวปฏิบัติที่ดีที่สุด' ในปัจจุบันสำหรับสิ่งประเภทนี้ ฉันได้ดูปลั๊กอินที่สามารถช่วยฉันทำสิ่งนี้และฉันเจอ:

  1. json-rest-api - สำหรับฉันดูเหมือนว่านี่เป็นการเปิดเผยการทำงานหลักของ WordPress เท่านั้น (เช่น. โพสต์, หน้า, ผู้ใช้, ฯลฯ ) และฉันไม่สามารถเห็นวิธีการนี้เพื่อดำเนินการแบบสอบถามที่กำหนดเองบนตารางที่ไม่ใช่ค่าเริ่มต้น

  2. โพสต์บล็อกนี้บอกว่าwp mvcทำในสิ่งที่ฉันต้องการอย่างแน่นอนยกเว้นว่ามันจะไม่ได้รับการปรับปรุงในช่วง 2 ปีที่ผ่านมา

  3. นอกจากนี้ยังมีJetpackแต่จากสิ่งที่ฉันเห็น json-rest-api เป็นรุ่นที่ปรับปรุงแล้วและดูเหมือนว่าจะให้ฟังก์ชั่นหลักเช่นกัน

มีวิธีที่จะทำให้ปลั๊กอินใด ๆ เหล่านี้ใช้งานได้สำหรับจุดปลายที่กำหนดเองหรือไม่? หรือมีปลั๊กอินอื่น ๆ ที่ฉันยังไม่ได้พบ?

หากฉันไม่ได้ใช้ปลั๊กอินฉันคิดว่าฉันจะต้องม้วนตัวเอง ฉันสามารถทำเช่นนี้ทั้งจากรอยขีดข่วน (ใช้wpdb, msqliหรือบางสิ่งบางอย่าง) หรือด้วยความช่วยเหลือของ API เช่นRestler

หากฉันม้วนตัวเองฉันควรสร้างเทมเพลตในธีมของฉันทำสิ่งที่เหลืออยู่ในนั้นและกำหนดธีมนั้นให้กับเพจภายในแดชบอร์ดหรือไม่? หรือมันจะดีกว่าถ้ามีเซิร์ฟเวอร์อื่นที่ใช้ WordPress แยกกัน

เท่าที่ฉันเห็นนี่เป็นทางเลือกเดียวของฉัน ฉันต้องการทราบว่าแนวทางปฏิบัติที่ดีที่สุดที่แนะนำสำหรับสิ่งนี้คืออะไร ฉันพบว่ามันยากที่จะเชื่อว่าไม่มีใครทำสิ่งนี้ มีตัวเลือกใดบ้างที่ฉันมองข้ามไป


อะไรที่คุณจะไปด้วย ฉันกำลังพยายามสร้างเส้นทาง / ปลายทางที่กำหนดเองสำหรับ wp resti api และ 1) เอกสารนั้นแย่มาก 2) มีตัวอย่างจากเว็บเป็นศูนย์ แจ้งให้เราทราบว่าคุณใช้เส้นทางไหน!
Jacksonkr

1
ฉันตัดสินใจที่จะสร้าง API ของตัวเองนอก Wordpress แต่นั่นเป็นการเข้าถึงฐานข้อมูลเดียวกัน แม้ว่าฉันจะไม่ได้เข้าไปใกล้มันจริงๆเพราะนี่เป็นเพียงโครงการด้านหนึ่งและฉันยุ่งมากกับสิ่งอื่น ๆ : P ถ้าฉันเป็นคุณผมจะมีลักษณะเป็นที่symfony2หรือLaravelกรอบ พวกเขารวดเร็วและง่ายต่อการติดตั้งและใช้งาน
Yep_It's_Me

คำตอบ:


15

TL; DR

ใช่ WordPress สามารถทำหน้าที่เป็นแบ็กเอนด์สำหรับแอพมือถือได้อย่างแน่นอน ใช่หน้าสามารถทำหน้าที่เป็นจุดพัก / ส่วนที่เหลือ ไม่เทมเพลตของชุดรูปแบบไม่ใช่ขอบเขตที่เหมาะสมสำหรับตรรกะ เขียนปลั๊กอินของคุณเอง


ตัวชี้

ฉันพบว่ามันยากที่จะเชื่อว่าไม่มีใครทำสิ่งนี้

ฉันหนึ่งมี มากกว่าหนึ่งครั้ง. และฉันอยู่ใกล้แน่นอนฉันไม่ได้อยู่คนเดียว "ไม่มีใครบล็อกอย่างกว้างขวางเกี่ยวกับเรื่องนี้" น่าจะเป็นความคิดที่ถูกต้องมากขึ้น

หากฉันไม่ได้ใช้ปลั๊กอินฉันคิดว่าฉันจะต้องม้วนตัวเอง ฉันสามารถทำเช่นนี้ทั้งจากรอยขีดข่วน (ใช้ wpdb, msqli หรือบางสิ่งบางอย่าง) หรือด้วยความช่วยเหลือของ API เช่นRestler

ฉันไม่รู้จัก "Restler" และอยู่นอกขอบเขตบนสแต็กนี้อยู่ดี
เท่าที่เกี่ยวข้องกับ "ใช้ wpdb, msqli หรืออะไรบางอย่าง" ที่เกี่ยวข้อง: แน่นอนคุณจะใช้wpdbเพื่อบันทึก (ได้รับ) ข้อมูลไปยังฐานข้อมูล แต่ไม่เกี่ยวข้องกับตรรกะปลายทาง

เทมเพลตชุดรูปแบบไม่ใช่สิ่งที่คุณควรตรวจสอบ ชุดรูปแบบมีไว้สำหรับการนำเสนอด้วยภาพ จุดสิ้นสุด REST ไม่จำเป็นต้องมีลักษณะที่ปรากฏเลย

ใส่จุดสิ้นสุดลงในหน้าเว็บที่คุณต้องการที่จะใช้ให้มันผ่านรหัส

มีตัวจัดการรหัสย่อ / การโทรกลับฟังHTTP POSTหรือGETและเรียกใช้การบันทึกข้อมูลหรือวิธีการรองอื่น ๆ ตามลำดับ


มันสมเหตุสมผลหรือไม่ที่จะใช้ WordPress เป็นจุดปลาย / แบ็กเอนด์?

มันขึ้นอยู่กับ.
หากสิ่งที่คุณต้องการคือจุดสิ้นสุดในการบันทึกข้อมูล: ไม่การโหลดแกนทั้งหมดเพียงเพื่อบันทึกโค้ดสองสามบรรทัดโดยใช้wpdbไม่คุ้มค่า
หากคุณต้องการแบ็กเอนด์ที่สามารถเข้าสู่ระบบผ่านทางเว็บเบราว์เซอร์ที่สามารถแสดงข้อมูลแบบตารางเสนอวิธีในการเปลี่ยนแปลงข้อมูลดังกล่าวแม้จะมีหลายระดับการเข้าถึง / บทบาทและสิทธิ์ของผู้ใช้แล้วใช่มันสมเหตุสมผล


3
คำตอบที่ดีจริงๆ +1
gmazzap

2
สองเท่านั้น +1
ไกเซอร์

ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมจริงๆ! ดังนั้นจากนั้นสองตัวเลือกที่ฉันมีคือ: 1. เขียนปลั๊กอินของตัวเอง; 2. เขียนบริการแยกต่างหาก เนื่องจากทั้งหมดที่ฉันต้องการจุดสิ้นสุดที่ต้องทำคือรับพารามิเตอร์ GET สองสามตัวและส่งคืนเนื้อความ JSON ฉันคิดว่าฉันควรเขียนบริการของตัวเองเพราะ "การโหลดแกนหลักทั้งหมดเพื่อบันทึกรหัสสองสามบรรทัดที่ใช้wpdbไม่คุ้มค่า"
Yep_It's_Me

0

API Endpoints plugin ควรครอบคลุมทุกความต้องการของคุณโดยเฉพาะถ้าคุณคุ้นเคยกับ MySQL คุณจะทำตามขั้นตอนต่อไปนี้:

  1. สร้างเทมเพลต Twig ใหม่ป้อนการสืบค้น MysQL ของคุณเพื่อดึงข้อมูลจากเว็บไซต์ WordPress ของคุณและใช้ไวยากรณ์ Twig เพื่อส่งออกข้อมูลในรูปแบบใด ๆ ตัวอย่างเช่น JSON

  2. สร้าง API ปลายทางใหม่ตั้งชื่อและกำหนดค่าให้ใช้เทมเพลตทวิกที่คุณสร้างในขั้นตอนที่ 1

เมื่อเสร็จแล้วให้ทำซ้ำขั้นตอนที่ 1 และ 2 สำหรับทุกจุดสิ้นสุดที่คุณต้องการสร้าง API Endpoints ใช้ระบบรับรองความถูกต้องของ WordPress มาตรฐานดังนั้นจึงเป็นการดีที่สุดที่จะสร้างผู้ใช้แยกต่างหากใน WordPress ของคุณและใช้ชื่อผู้ใช้ / รหัสผ่านเพื่อเข้าถึงจุดปลาย api ของคุณ


API Endpoints ดูน่าสนใจสำหรับโครงการของฉัน แต่ต้องใช้ Twig Anything ซึ่งแทบจะเป็นไปไม่ได้เพราะต้องใช้การลงชื่อเข้าใช้ในบล็อกของคุณซึ่งไม่อนุญาตการสมัครรับข้อมูลสาธารณะ
mettjus

ตอนนี้ฉันรู้ว่ามันไม่ได้เป็นฟรี ...
mettjus

0

WP REST API เวอร์ชันใหม่เป็นเบต้า แต่มีเอกสารที่ดีเกี่ยวกับวิธีการลงทะเบียนปลายทาง REST แบบกำหนดเอง นอกจากนี้ยังมีความชัดเจนเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีการที่สามารถทำได้ในรุ่น 1 ซึ่งฉันจะลองใช้งานเนื่องจากเบต้าไม่รับประกันว่าจะคงอยู่หรือมีเสถียรภาพ ฉันคิดว่าคุณสามารถใช้ wpdb จากภายในวิธีการที่คุณลงทะเบียน จริง ๆ แล้วฉันแค่ใช้สิ่ง ACF และเตรียมไว้เป็นวัตถุใน php ของฉันเพื่อสร้างหน้าดัชนีคุณสมบัติหลายหน้าที่ค้นหา / จัดเรียงได้ด้วย angularJS

การเปรียบเทียบระหว่าง WWP REST API 1 และ 2 จากเอกสารของพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.