Membangun API REST khusus

10

Saya memiliki situs WordPress.org yang mengambil input pengguna, mencari basis data khusus dan menampilkan hasil kueri. Saya memiliki ini berfungsi menggunakan kelas wpdb . Sekarang saya mencoba membuatnya berfungsi untuk aplikasi android.

Dari apa yang saya mengerti, membangun server yang tenang adalah 'praktik terbaik' saat ini untuk hal semacam ini. Saya telah melihat beberapa plugin yang dapat membantu saya melakukan ini, dan saya telah menemukan:

  1. json-rest-api - Bagi saya ini hanya memperlihatkan fungsionalitas inti WordPress (mis. posting, halaman, pengguna, dll.) dan saya tidak bisa melihat bagaimana mendapatkan ini untuk mengeksekusi query kustom pada tabel non-default.

  2. Posting blog ini mengatakan bahwa wp mvc melakukan apa yang saya inginkan, kecuali itu belum diperbarui dalam lebih dari 2 tahun, sehingga agak mengesampingkan itu.

  3. Ada juga Jetpack tetapi dari apa yang saya lihat, json-rest-api adalah versi terbaru dari ini dan sepertinya hanya memberikan fungsionalitas inti juga.

Apakah ada cara untuk membuat plugin ini berfungsi untuk titik akhir khusus? Atau ada plugin lain yang belum saya temukan?

Jika saya tidak menggunakan plugin, saya pikir saya harus roll sendiri. Saya dapat melakukan ini dari awal (menggunakan wpdb, msqliatau sesuatu), atau dengan bantuan API seperti Restler .

Jika saya melakukan roll sendiri, haruskah saya membuat template di tema saya, lakukan hal-hal REST di sana dan menetapkan tema itu ke halaman di dalam dasbor? Atau lebih baik memiliki server lain yang berjalan terpisah untuk WordPress untuk ini?

Sejauh yang saya bisa lihat, ini adalah satu-satunya pilihan saya. Saya ingin tahu praktik apa yang direkomendasikan untuk hal semacam ini. Saya merasa sulit untuk percaya bahwa tidak ada orang lain yang melakukan ini. Apakah ada opsi yang saya abaikan?

Yep_It's_Me
sumber
Apa yang akhirnya Anda lakukan? Saya mencoba membuat rute / titik akhir khusus untuk api sisa wp dan 1) dokumentasi mengerikan 2) ada nol contoh di seluruh web. Tolong beri tahu saya rute apa yang Anda ambil!
Jacksonkr
1
Saya memutuskan untuk membangun API sendiri di luar Wordpress, tetapi itu memiliki akses ke database yang sama. Saya tidak pernah benar-benar menyadarinya, karena ini hanya proyek sampingan dan saya sudah terlalu sibuk dengan hal-hal lain: P. Jika aku jadi kau aku akan melihat ke dalam symfony2 atau LARAVEL kerangka kerja. Mereka sangat cepat dan mudah untuk menjalankan dan menjalankan sesuatu.
Yep_It's_Me

Jawaban:

15

TL; DR

Ya, WordPress tentu dapat bertindak sebagai backend untuk aplikasi seluler. Ya, sebuah halaman dapat bertindak sebagai titik akhir / antarmuka lainnya. Tidak, templat tema bukan wilayah yang tepat untuk logika. Tulis plugin Anda sendiri.


Pointer

Saya merasa sulit untuk percaya bahwa tidak ada orang lain yang melakukan ini.

Saya, untuk satu, punya. Lebih dari sekali. Dan saya yakin saya tidak sendirian. "Tidak ada yang punya banyak blog tentang hal itu" mungkin adalah gagasan yang lebih benar.

Jika saya tidak menggunakan plugin, saya pikir saya harus roll sendiri. Saya dapat melakukan ini dari awal (menggunakan wpdb, msqli atau sesuatu), atau dengan bantuan API seperti Restler .

Saya tidak tahu "Restler" dan itu di luar jangkauan pada tumpukan ini.
Sejauh "menggunakan wpdb, msqli atau sesuatu" yang bersangkutan: Anda tentu akan menggunakan wpdbuntuk menyimpan (menerima) data ke database, tetapi itu tidak berkaitan dengan logika titik akhir.

Template tema bukanlah yang harus Anda perhatikan. Tema dimaksudkan untuk presentasi visual. Titik akhir REST tidak memerlukan tampilan visual sama sekali.

Masukkan titik akhir ke halaman yang ingin Anda gunakan melalui kode pendek .

Mintalah penangan kode pendek / panggilan balik mendengarkan HTTP POST atau GET dan meminta penyimpanan data atau metode sekunder lainnya sesuai.


Apakah masuk akal untuk menggunakan WordPress sebagai titik akhir / backend?

Tergantung.
Jika semua yang Anda butuhkan adalah titik akhir untuk menyimpan data: Tidak. Memuat seluruh inti hanya untuk menyimpan beberapa baris kode dengan menggunakan wpdbtidak layak.
Jika Anda memerlukan backend yang dapat login melalui browser web, yang dapat menampilkan data tabular, menawarkan cara untuk mengubah data tersebut, bahkan mungkin dengan beberapa tingkat akses / peran dan hak pengguna, maka ya, itu masuk akal.

Johannes Pille
sumber
3
+1 benar-benar bagus.
gmazzap
2
Gandakan itu. +1
kaiser
Terima kasih atas jawaban yang sangat bagus! Maka dari itu, dua opsi yang saya miliki adalah: 1. tulis plugin saya sendiri; 2. menulis layanan terpisah. Karena semua yang saya butuhkan titik akhir untuk lakukan adalah mengambil beberapa parameter GET dan mengembalikan tubuh JSON, saya pikir saya harus menulis layanan saya sendiri karena "Memuat seluruh inti hanya untuk menyimpan beberapa baris kode menggunakan wpdbtidak layak".
Yep_It's_Me
0

Plugin API Endpoints harus mencakup semua kebutuhan Anda, terutama jika Anda terbiasa dengan MySQL. Anda akan melakukan langkah-langkah berikut:

  1. Buat Ranting Kerangka baru, masukkan kueri MysQL Anda untuk mengambil data dari situs WordPress Anda dan gunakan sintaks Ranting untuk menampilkan data dalam format apa pun. Misalnya, JSON.

  2. Buat titik akhir API baru, berikan nama dan konfigurasikan untuk menggunakan Kerangka Templat yang Anda buat pada langkah 1.

Setelah selesai, ulangi langkah 1 dan 2 untuk setiap titik akhir yang ingin Anda buat. API Endpoint menggunakan sistem otentikasi WordPress standar, jadi akan lebih baik untuk membuat pengguna terpisah di WordPress Anda dan menggunakan nama pengguna / kata sandi untuk mengakses titik akhir api Anda.

Meglio
sumber
API Endpoints terlihat menarik untuk proyek saya, tetapi membutuhkan Twig Anything yang hampir tidak mungkin didapat karena memerlukan login di blog Anda yang tidak memungkinkan berlangganan publik.
mettjus
Saya sekarang menyadari itu tidak gratis ...
mettjus
0

Versi baru WP REST API adalah dalam Beta, tetapi memiliki dokumentasi yang cukup bagus tentang cara mendaftar titik akhir REST khusus. Ada juga uraian kecil tentang bagaimana hal itu dapat dilakukan dalam versi 1, yang akan saya coba sejak beta tidak dijamin menjadi atau tetap stabil. Saya berasumsi Anda kemudian dapat menggunakan wpdb dari dalam metode yang Anda daftarkan. Saya sebenarnya hanya menggunakan hal-hal ACF dan membuatnya menjadi objek di php saya untuk membuat halaman indeks multi-properti yang bagus, dapat dicari / diurutkan dengan angularJS.

Perbandingan Antara WWP REST API 1 dan 2 dari dokumen mereka

Kyle Zimmer
sumber