Pertama-tama, saya mengerti bahwa ini adalah sebuah plugin pada saat ini tetapi hampir pasti sebagian dari WordPress. Jadi saya harap ini tidak ditandai sebagai di luar topik.
Saya sudah membaca dokumen resmi mereka, banyak artikel lain dan menonton video tutorial tetapi saya masih belum mendapatkan beberapa poin .. Ini tentu masa depan WordPress, sangat berguna untuk pengembangan aplikasi seluler dan menggunakan / berbagi data antara berbagai situs tetapi: apa fungsinya untuk situs saya saja?
Pertimbangkan ini:
Saya sedang mengerjakan komentar. Saya ingin bagian komentar dimuat hanya ketika pengguna menggulir ke bagian komentar (dengan -200px offset, sehingga tidak ada penundaan) .
- Saya akan memicu panggilan ajax ketika pengguna menggulir ke titik itu
- Panggilan Ajax mengirimkan beberapa data dengannya, seperti
post_id
dll - Jalankan
WP_Comment_Query()
di server - Kirim
JSON
data kembali ke klien dengan hubungan komentar, nama, konten dll - Gunakan JavaScript
document.createElement()
,innerHTML
dll untuk membuat dan menampilkan komentar
Sekarang .. Mengapa saya menggunakan REST API saja? Apa gunanya bagiku? Hanya futureproof?
Saya masih akan perlu menggunakan JavaScript untuk output semua data saya mendapatkan .. saya tidak menemukan apapun artikel yang baik mengapa atau untuk apa yang harus saya gunakan REST API (kecuali transfer data antara situs dan developement aplikasi seluler) ..
WP_Comment_Query()
2. Bangun larik komentar masing-masing dengan larik parameter dalamwhile
loop 3.json_encode()
4.echo
data disandikan kembali. Semua ini dalamwp_ajax
dan / atauwp_ajax_nopriv
fungsi.Jawaban:
Pada kondisi saat ini, ini adalah fitur rekayasa buruk yang tidak memiliki keunggulan nyata bagi pengembang yang kompeten.
Ide dasarnya, seperti yang ada pada saat jawaban ini ditulis, adalah untuk mengekspos fungsionalitas inti WordPress sebagai JSON REST API. Ini akan memungkinkan decoupling logika WordPress "bisnis" dari UI dan memungkinkan membuat UI penuh atau sebagian yang berbeda untuk mengelola dan mengekstrak informasi dari wordpress. Dengan sendirinya ini bukan revolusi, tetapi sebuah evolusi. hanya penggantian XML-RPC API yang dengan sendirinya agak merampingkan HTTP berdasarkan API pengiriman.
Seperti halnya evolusi apa pun, pada setiap langkah Anda mungkin bertanya pada diri sendiri, keuntungan apa yang Anda dapatkan dari keadaan sebelumnya, dan jawabannya mungkin "tidak banyak", tetapi mudah-mudahan langkah-langkahnya menumpuk menjadi perbedaan besar.
Jadi mengapa kata pengantar negatif untuk jawaban ini? Karena pengalaman saya sebagai pengembang perangkat lunak adalah bahwa jarang mungkin untuk merancang API generik yang sebenarnya berguna tanpa harus menggunakan kasus penggunaan konkret. Kasus penggunaan konkret di sini dapat menggantikan XML-RPC API untuk manajemen wordpress otomatis, tetapi setiap ujung depan terkait harus spesifik situs dan karena ada penalti kinerja yang sangat besar untuk setiap permintaan yang dikirim dari klien ke server Anda tidak bisa hanya agregat gunakan API yang berbeda untuk mendapatkan hasil yang Anda inginkan dengan cara di mana pengguna akan tetap bahagia. Ini berarti bahwa untuk ujung depan, untuk penggunaan non-sepele, masih akan ada sedikit perbedaan dalam upaya pengembangan antara menggunakan rute AJAX dan rute REST-API.
sumber
Dua keunggulan menyeluruh adalah:
Mengenai contoh Anda secara khusus-
Ganti langkah 3 & 4 dengan REST API, dan ganti langkah 1, 2, dan 5 dengan Backbone.js. BOOM, aplikasi web dinamis. Atau mungkin Anda lebih nyaman melakukan perutean kompleks yang diperlukan untuk situs Anda dengan Python.
sumber
Sebenarnya ada beberapa hal.
Ini memungkinkan Anda menjalankan fungsi-fungsi spesifik sesuai kebutuhan, alih-alih membutuhkan semua perhitungan dari seluruh pemuatan halaman. Jadi, Anda dapat memperbarui komentar secara berkala dengan overhead yang cukup rendah tanpa perlu me-refresh halaman dengan hanya memanggil titik akhir API dan memperbarui data pada halaman Anda. Konsep ini pada akhirnya akan diekstrapolasi ke dalam SPA (aplikasi satu halaman) yang memuat situs "klien" dengan cepat sekali, dan mengemulasi semua "perubahan" halaman tanpa perlu menarik kembali HTML halaman setiap kali. Ini sudah sangat populer dengan munculnya kerangka kerja seperti Angular, Ember, dan React. Situs dapat merespons dengan kecepatan sangat tinggi, sementara keduanya membebani sebagian daya komputasi ke pengguna akhir (siklus render, logika non-bisnis) dan mengurangi jumlah keseluruhan panggilan ke server secara signifikan (hanya tarik data yang Anda butuhkan,
Ini memisahkan logika bisnis dan penyaji. Ya, Anda dapat menggunakan API dengan situs PHP lain memuntahkan hasilnya, atau menanganinya dengan Javascript seperti yang Anda sebutkan, tetapi Anda juga dapat mengkonsumsinya dengan aplikasi seluler asli, aplikasi desktop, dll. Tidak hanya itu, tetapi Anda dapat memiliki masing-masing dari mereka berbicara dengan API yang sama, yang secara konsisten melakukan logika bisnis yang sama, yang pada gilirannya menciptakan konsistensi dan keandalan di berbagai klien yang mengkonsumsi API.
API bagus karena mereka memisahkan masalah logika dan tampilan.
sumber
API REST WordPress adalah kesegaran baru. Dengan aplikasi yang didorong oleh satu halaman, dan WordPress ingin menjadi platform aplikasi, ini sangat masuk akal. Rencananya adalah mengganti XML-RPC dengan REST API (yang merupakan hal yang baik untuk alasan keamanan saja!)
https://make.wordpress.org/core/2015/09/21/wp-rest-api-merge-proposal/
Ini seperangkat alat lain untuk membawa WordPress maju. Dan, meskipun ini merupakan perjalanan yang berkelok-kelok untuk sampai ke tempat kita berada, saya pikir perlu meluangkan waktu untuk mengeksplorasi dan memahaminya.
sumber
Hal pertama yang pertama - REST ringan
Dalam satu baris - Ketika kami menggunakan REST API kami melakukan semua rendering data di sisi klien (loop, kondisi dan panggilan sisi server dll.) Menghemat bandwidth dan pada saat yang sama aplikasi kami menjadi siap untuk platform mobile apa pun, integrasi pihak ke-3 dan termodulasi ( pemisahan antara sisi depan dan sisi server).
Anda tidak menginginkan ini?
sumber
Selain 2 poin hebat @Milo yang disebutkan, saya secara khusus menggunakan REST API untuk mengekspos data saya ke aplikasi non-WordPress. Kami memiliki ekstensi Chrome yang menarik informasi dari basis data WordPress kami, dan ini dicapai dengan menekan titik akhir REST API dengan permintaan POST.
sumber
Infrastruktur KONSISTEN
API REST konsisten dan dapat dibaca manusia. Ini mendokumentasikan diri.
GET wp-json/wp/v2/posts
cukup jelas apa fungsinya. AdaGET
beberapa posting.Anda memiliki namespace:,
wp
versi:v2
dan koleksi objekposts
Bisakah Anda menebak apa:
GET wp-json/wp/v2/posts/5
tidak? Bagaimana:GET wp-json/wp/v2/posts/5/comments
Bagaimana:GET wp-json/shop/v2/orders/345/lines/11/price
Seorang pengembang dapat dengan mudah menebak dengan melihat itu, ia akan mendapatkan harga baris
11
sesuai pesanan345
bahkan tanpa membaca dokumentasi. Dev bahkan dapat dengan mudah mengatakan bahwa itu berasal darishop
Plugin karena itu namespace.Bagaimana dengan
POST /wp-json/v2/posts title=New Blog Post
BagaimanaPUT /wp-json/v2/posts title=New Title
Itu juga cukup jelas. Itu membuat posting baru. Omong-omong, itu mengembalikan ID dari posting baru. Ini bukan tentang AJAX ATAU API REST. AJAX hanyalah teknologi yang mengakses API REST. Padahal, sebelumnya, Anda harus datang dengan sekelompok nama fungsi ajax abstrak seperti:
get_price_for_lineitem( $order, $line )
. Apakah itu akan mengembalikan hanya nomor, atau objek JSON? Saya tidak yakin, di mana dokumentasinya. Oh ... adalah panggilan ajaxget_order_line_price
atauget_lineitem_price
.Pengembang tidak harus membuat keputusan ini, karena
wp-json
api yang ada menyediakan model dasar yang baik untuk diikuti saat membuat titik akhir Anda sendiri. Tentu, pengembang plugin atau api dapat melanggar aturan-aturan ini, tetapi secara umum lebih mudah untuk mengikuti standar yang telah ditetapkan dan sebagian besar pengembang lebih suka mengikuti pola yang telah ditetapkan (lihat bagaimana pola jQuery meresap sekarang).ABSTRAKSI tanpa gangguan
Apakah saya peduli bagaimana cara
POST /wp-json/mysite/v1/widgets title=Foobar
kerjanya? Nggak. Saya hanya ingin membuat yang baruWidget
dan saya ingin ID sebagai imbalannya. Saya ingin melakukannya dari formulir di ujung depan saya tanpa menyegarkan halaman. Jika saya membuat permintaan ke URL, saya tidak peduli apakah itu PHP, C #, ASP.NET atau teknologi lainnya. Saya hanya ingin membuat Widget baru.REST API memisahkan backend dari depan. Secara teknis, jika API Anda cukup baik, Anda dapat mengubah seluruh tumpukan backend Anda. Selama Anda mempertahankan struktur REST API yang sama, apa pun yang bergantung pada API tidak akan terpengaruh.
Jika REST API Anda sederhana dan cukup konsisten, menggunakan kata benda seperti
Widgets
kumpulan objek dan kata benda / pengenal inginWidget/2
menunjukkan entitas tunggal, sangat mudah untuk menulis API itu dalam teknologi yang sangat berbeda karena lebih atau kurang dasar pemipaan basis data kode.Menggunakan kata kerja Permintaan HTTP Standar.
API REST memanfaatkan inti cara kerja web dan VERB (baca: tindakan) yang Anda gunakan peta untuk fungsi CRUD data standar.
Ada lebih banyak kata kerja HTTP, tetapi itulah dasarnya. Setiap permintaan tunggal melalui internet menggunakan kata kerja ini. API REST berada tepat di atas model web yang dibangun berdasarkan permintaan. Tidak perlu ada lapisan komunikasi atau model abstraksi di antaranya. Itu hanya permintaan http standar ke URL dan mengembalikan respons. Anda tidak bisa menjadi lebih sederhana dari itu.
Pada dasarnya, ini membuat pengembang lebih sadar akan mur dan baut tentang bagaimana sebenarnya web bekerja dan ketika Anda semakin memahami bagaimana protokol yang mendasarinya bekerja, Anda akhirnya membuat produk yang lebih baik dan lebih efisien.
sumber