วิธีลบเส้นทางและปลายทางของ WordPress REST API เริ่มต้น
เผยแพร่แล้ว: 2018-07-31WordPress REST API ถูกนำมาใช้ในคอร์ในเวอร์ชัน 4.7 (Vaughan) ในเดือนธันวาคม 2016 เช่นเดียวกับการเปลี่ยนแปลงที่สำคัญอื่น ๆ ที่เกิดขึ้นใน WP core ได้มีการถกเถียงกันอย่างดุเดือด (ณ กรกฎาคม 2018 Gutenberg เป็นหัวข้อของการอภิปราย/ ความขัดแย้ง). สุดท้ายก็ไม่มีอะไรเกิดขึ้น ผู้ที่ไม่สนใจ REST API ก็ยังไม่สนใจ บรรดาผู้ที่ใส่ใจสร้างแอป การผสานรวม ปลั๊กอิน และโปรเจ็กต์เจ๋งๆ อื่นๆ
เมื่อ #wordpress REST API ถูกรวมเข้ากับ v4.7 core ผู้คนต่างพากันวิตก! เช่นเดียวกับที่พวกเขาประหลาดใจเมื่อมีการเปลี่ยนแปลงใด ๆ เกิดขึ้น ในที่สุดทุกอย่างก็ออกมาดี
คลิกเพื่อทวีตและในขณะที่เราอยู่ในหัวข้อของโครงการดีๆ คุณรู้หรือไม่ว่าคนที่ประสบความสำเร็จมากที่สุดเริ่มต้นด้วยหน้าเร็วๆ นี้ และในหลายกรณี จะเป็นหน้าเร็วๆ นี้ที่สร้างขึ้นโดยใช้ปลั๊กอินโหมดเร็วๆ นี้และโหมดบำรุงรักษา
ปลั๊กอินนี้มาพร้อมกับตัวสร้างแบบลากแล้ววาง ธีมมากกว่า 170 ธีม การตั้งค่า SEO ที่ดีที่สุดในระดับเดียวกัน บริการตอบกลับอัตโนมัติและอีเมล และคุณสมบัติอื่น ๆ อีกมากมายที่จะช่วยให้คุณสร้างหน้าที่สมบูรณ์แบบในเร็วๆ นี้ และเหนือสิ่งอื่นใด ปลั๊กอินนี้ถูกรวมเข้ากับ Depositphotos ซึ่งหมายความว่าคุณสามารถค้นหาภาพที่ดีที่สุดได้โดยตรงจากปลั๊กอิน แต่ในกรณีที่คุณไม่ใช่แฟนของคอลเลกชั่นที่ Depositphotos เสนอให้ Yay Images ก็เป็นแหล่งเนื้อหาสต็อกชั้นเยี่ยมเช่นกัน
แต่พอกลับมาที่หัวข้อหลักของเรา REST API
เราใส่ใจเกี่ยวกับ REST API และใช้งานเมื่อสร้าง WP ที่ขับเคลื่อนด้วย SaaSes มีความเสถียร รวดเร็ว ใช้งานง่าย เข้ากับ WP และจัดทำเป็นเอกสารส่วนใหญ่ในกรณีส่วนใหญ่ หากคุณไม่รู้ว่า REST API คืออะไร นี่อาจไม่ใช่โพสต์สำหรับคุณ แต่ลองดูว่า REST API คืออะไร (วิดีโอและข้อความ) และบางทีคุณอาจจะใช้ในโครงการต่อไปของคุณ
เส้นทาง? ปลายทาง? มันไม่เหมือนกันทั้งหมดเหรอ?
ไม่ มันไม่เหมือนกัน ความแตกต่างนั้นละเอียดอ่อนสำหรับคนส่วนใหญ่ และพวกเขาใช้คำว่าเส้นทางและปลายทางสลับกันได้ แต่ก็ไม่ได้ซับซ้อนขนาดนั้น เส้นทางเป็น URL ไม่มากก็น้อย มันคือ “ชื่อ” ที่ใช้ในการเข้าถึงปลายทาง ในเส้นทางเดียว คุณสามารถมีปลายทางได้หลายจุด เนื่องจากปลายทางที่คุณใช้จะขึ้นอยู่กับประเภทคำขอ HTTP ที่คุณใช้ GET
, POST
, PUT
หรือ DELETE
ทำได้และมักจะใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน การเข้าถึง yoursite.com/wp-json/v2/posts/1 ผ่าน GET
จะทำให้คุณได้รับรายละเอียดสำหรับการโพสต์ด้วย ID #1 การใช้ DELETE
บนเส้นทางเดียวกันจะเรียกปลายทางอื่น (หรือฟังก์ชัน หากคุณต้องการ) ที่จะลบโพสต์นั้น คู่มือ REST API อย่างเป็นทางการมีข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ดังนั้นดำดิ่งเพื่อดูรายละเอียด
#wordpress REST API เส้นทางและปลายทางไม่เหมือนกัน! เส้นทางคือ "ชื่อ" ที่ใช้ในการเข้าถึงปลายทาง เส้นทางเดียวมักจะเชื่อมโยงกับจุดปลายหลายจุด
คลิกเพื่อทวีตเหตุใดฉันจึงลบปลายทางหรือเส้นทาง WP REST API เริ่มต้น
ดังที่เราได้กล่าวถึงในบทความเกี่ยวกับการลบกฎการเขียนใหม่เริ่มต้น – มีเหตุผลหลายร้อยประการที่นักพัฒนา WordPress จะทำเช่นนี้
“มันจะทำให้ WordPress เร็วขึ้นเพราะไม่ต้องแยกวิเคราะห์ปลายทางเหล่านั้นทั้งหมด” ยังคงเป็นสิ่งที่ฉันไม่เห็นด้วยและเชื่อว่ากำไรจะน้อยกว่ามิลลิวินาที แต่ก็ไม่สามารถทำร้ายได้
คุณชอบที่จะรักษาสิ่งต่าง ๆ ให้สะอาดและเนื่องจากคุณไม่ได้ใช้ REST API – เหตุใดจึงมีเส้นทาง API แน่นอนว่ามีเหตุผล แต่ในกรณีนั้น ให้ใช้ปลั๊กอินเพื่อปิดใช้งาน REST API อย่างสมบูรณ์
และนั่นคือเหตุผลที่เราปิดใช้งานเส้นทางเริ่มต้น (และปลายทาง) เราใช้ตำแหน่งข้อมูล REST API แบบกำหนดเองอย่างหนัก แต่ไม่ต้องการตำแหน่งเริ่มต้น ดังนั้นจึงเป็นเรื่องดีที่จะรักษาสิ่งของให้ปลอดโปร่งและสะอาด นอกจากนี้ยังไม่สามารถทำร้ายความปลอดภัยได้ เนื่องจากเรากำลังเปิดเผยข้อมูลจำนวนน้อยลงต่อโลกภายนอกที่โหดร้าย

แสดงปลายทาง API เริ่มต้น
การอ้างอิงปลายทางมีอยู่ในคู่มือ REST API ข้อมูลส่วนใดส่วนหนึ่งที่เปิดเผยต่อสาธารณะจะพร้อมใช้งานผ่าน REST API เช่นกัน ตัวอย่างคำขอ demo.wp-api.org/wp-json/wp/v2/posts จะแสดง 10 โพสต์ในรูปแบบ JSON หากคุณต้องการเวอร์ชันที่มนุษย์สามารถอ่านได้ของการตอบกลับนั้น คุณจะต้องถอดรหัสการตอบกลับ JSON เช่นเดียวกับหน้า หมวดหมู่ และโครงสร้างข้อมูลอื่นๆ โครงสร้างข้อมูลและปลายทางมีความคล้ายคลึงกันมาก เนื่องจากคุณสามารถดูได้ว่าคุณเรียกดูข้อมูลอ้างอิงหรือไม่
อีกวิธีหนึ่งในการดูเส้นทางเริ่มต้นคือการเพิ่มโค้ดนี้ลงในไฟล์ functions.php
ของธีมของคุณ จากนั้นเปิด yoursite.com/wp-json/ เปิดใช้งานลิงก์สวย ๆ หากคุณยังไม่ได้เปิดใช้งาน
add_filter( 'rest_endpoints', 'show_default_endpoints' ); function show_default_endpoints( $endpoints ) { var_export( array_keys( $endpoints ) ); die; }
แสดงปลายทาง REST เริ่มต้น 31 จุด แน่นอนว่าจำนวนดังกล่าวมีความอ่อนไหวต่อการเปลี่ยนแปลงเมื่อมีการเพิ่มฟังก์ชันการทำงานหลักใหม่ และจะแตกต่างออกไปหากคุณมีปลั๊กอินที่เพิ่มปลายทางที่กำหนดเอง
การลบปลายทางเริ่มต้น
โค้ดด้านบนต้องการการเปลี่ยนแปลงเพียงเล็กน้อย ส่งกลับอาร์เรย์ที่ว่างเปล่า และจุดสิ้นสุดทั้งหมดจะหายไป
add_filter( 'rest_endpoints', 'remove_default_endpoints' ); function remove_default_endpoints( $endpoints ) { return array( ); }
“ตำแหน่งข้อมูลทั้งหมด” รวมถึงปลายทางที่คุณกำหนดเองด้วย ดังนั้นจึงไม่ควรลบทิ้ง นี่เป็นวิธีง่ายๆ ในการเปิดใช้งาน:
add_filter( 'rest_endpoints', 'remove_default_endpoints_smarter' ); function remove_default_endpoints_smarter( $endpoints ) { $prefix = 'your_custom_endpoint_prefix'; foreach ( $endpoints as $endpoint => $details ) { if ( !fnmatch( '/' . $prefix . '/*', $endpoint, FNM_CASEFOLD ) ) { unset( $endpoints[$endpoint] ); } } return $endpoints; }
เพียงข้ามปลายทางด้วยคำนำหน้าที่กำหนดเองและเก็บไว้ในอาร์เรย์ อย่าลืมส่งคืนอาร์เรย์
การปรับแต่งคำนำหน้า REST URL
ปลายทางที่กำหนดเอง แม้ว่าจะกำหนดเองก็ตาม ให้ใช้คำนำหน้าเดียวกันกับปลายทางเริ่มต้น พวกเขาดูเหมือน mysite.com/wp-json/custom-endpoint/ บางทีคุณอาจพบว่าสิ่งที่น่าเกลียดหรือไม่ชอบสิ่งที่เป็นค่าเริ่มต้น การเปลี่ยนเป็นเรื่องของรหัสหนึ่งบรรทัด เพื่อวัตถุประสงค์ในการทดสอบ ให้วางโค้ดด้านล่างใน functions.php
ของธีม และหลังจากบันทึกแดชบอร์ดที่เปิดอยู่ – การตั้งค่า – ลิงก์ถาวรเพื่อล้างกฎการเขียนซ้ำ
add_filter( 'rest_url_prefix', 'rest_url_prefix' ); function rest_url_prefix( ) { return 'api'; }
เมื่อตัวกรองอยู่เหนือจุดปลายทางของคุณ จะเป็น mysite.com/api/custom-endpoint/ และการเปิด mysite.com/wp-json/custom-endpoint/ URL เก่าจะทำให้เกิดข้อผิดพลาด 404
ตรวจสอบให้แน่ใจว่าคุณใส่หมายเลขเวอร์ชันในปลายทางที่กำหนดเองของคุณ เนื่องจาก WP จะไม่เพิ่มคำนำหน้าโดยอัตโนมัติ คำนำหน้าหมายเลขเวอร์ชันช่วยให้มั่นใจได้ว่าการเปลี่ยนแปลงที่เกิดขึ้นจริงจะไม่ทำให้ไคลเอ็นต์ที่ใช้ปลายทางเก่าเสียหาย เพียงใส่คำนำหน้าเวอร์ชันเมื่อเรียกใช้ register_rest_route()
เพื่อรับบางอย่างเช่น mysite.com/api/v1/custom-endpoint/ และเก็บปลายทางทั้งหมดของคุณไว้เบื้องหลัง "v1" นั้นเพื่อให้คุณมี "v2" เป็นต้นในภายหลัง
ทดสอบการเปลี่ยนแปลงของคุณ
การลบหรือแก้ไขเส้นทางและจุดปลาย REST API จะไม่สร้างความแตกต่างใดๆ ในไซต์ WP 98% "ทำไม?" – เพราะพวกเขาไม่ได้ใช้ REST API เลย แต่ถ้าเป็นของคุณ โปรดตรวจสอบให้แน่ใจว่าคุณได้ทดสอบแอปที่เชื่อมต่อแล้ว เพราะการเปลี่ยนแปลงสามารถทำลายสิ่งต่างๆ ได้ เช่นเดียวกับทุกสิ่งทุกอย่าง และดีกว่าที่จะตรวจพบจุดบกพร่องในวันนี้มากกว่าพรุ่งนี้