Bagaimana cara membangun API yang tenang dengan Joomla

11

Saya telah membangun ekstensi Joomla sejak v1 tetapi saya harus segera mengambil API live yang telah saya buat dan telah digunakan untuk sementara waktu. Saat ini saya menggunakan Joomla 2.5 dan memiliki plugin tertulis untuk sistem ini:

https://github.com/techjoomla/com_api

Sebelum ditayangkan saya ingin bukti di masa depan sistem sebanyak mungkin. Komponen API ini baru saja mulai ditingkatkan untuk bekerja dengan Joomla v3 sehingga saat ini mencegah situs dari ditingkatkan. Saya juga berpikir memisahkan API publik dan portal pengguna masuk akal karena tidak ada manfaat dari itu menjadi ekstensi terintegrasi karena API akan digunakan oleh aplikasi seluler.

Rencana saat ini adalah membangun kembali API pada subdomain yang memungkinkan kami untuk meningkatkan portal pengguna. Saya telah membaca tentang kerangka kerja Joomla baru yang terlihat menarik. Apakah ini cocok untuk membangun API TETAP untuk aplikasi seluler kami? Jika demikian, apakah mereka tips untuk memulai? Saya pernah membaca bahwa FoF dapat digunakan untuk membangun API, apakah ini pilihan yang baik? Saya melihat proyek Kickstarter bermaksud untuk membangun API semacam ini, apakah itu opsi potensial? Haruskah saya menghapus situs 2.5 saat ini untuk subdomain sehingga hanya menjalankan API?

Setiap saran tentang pendekatan terbaik untuk membangun RESTful API berbasis Joomla untuk interaksi seluler akan sangat dihargai.

Joe P.
sumber
1
Saya baru saja melihat ekstensi baru ini di Direktori Ekstensi Joomla yang mungkin berguna bagi Anda: extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Jawaban:

8

Dari pengalaman saya:

Tentang kerangka kerja Joomla

Saya mencoba membangun API RESTful sederhana untuk otentikasi terintegrasi berdasarkan kerangka kerja Joomla. Ini cukup kompleks, sangat berbeda dari API Joomla saat ini. Juga, kode sumber saat ini tidak dapat disalin-salin, dan perpustakaan dapat mengembalikan hasil yang tidak diharapkan (dieksekusi di lingkungan yang berbeda). Saya akan menunggu sampai kode lebih banyak tersedia, dan memiliki adopsi yang lebih besar.

Tentang kerangka kerja FOF

Saat ini saya hanya mengembangkan dengan FOF. Cukup praktis, banyak RAD, konfigurasi otomatis, dll; dan kode ini kompatibel dengan J2.5 / J3.

Untuk RESTful API, Anda bisa mengambil todo-fof-example, dan menambahkan controller dengan API. Contoh:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

Selain itu, Anda dapat memanfaatkan tampilan json otomatis. Misalnya tampilan penelusuran (default.php) dapat menghasilkan output json (hanya menambahkan default_json.phpdan echo json_encode...)

Anibal
sumber
1
Satu-satunya masalah dengan FOF seperti yang saya mengerti, adalah bahwa hal itu tidak lagi didukung oleh pengembang di inti Joomla ... meskipun saya mengerti bahwa versi FOF telah bercabang ulang dan akan terus maju, hanya saja bukan sebagai bagian dari Joomla?
Craig
Anda benar, tetapi itu sama sekali bukan masalah. FOF Joomla cukup stabil (saya belum memutakhirkan ekstensi saya). F0F baru harus diinstal sebagai perpustakaan baru (... pada akhirnya Anda harus selalu menginstalnya di J2.5 ... dan penginstal siap untuk J3). Saat ini, 99% dari kode sumber tidak berubah.
Anibal
Terima kasih atas saran Anda, saya setuju bahwa Kerangka Joomla cukup rumit tapi saya senang belajar bagaimana menggunakannya. Saya ingin mencoba menggunakan kerangka kerja untuk API saya karena cukup sederhana tetapi tidak dapat mengembalikan kerangka yang benar untuk JSON. Saya memulai pertanyaan lain tentang itu.
Joe P
6

com_api jelas merupakan cara yang baik untuk membangun layanan REST untuk situs Anda jika ekstensi itu sendiri tidak didasarkan pada FOF / RAD. Namun berhati-hatilah dengan beberapa gotcha jika Anda berencana untuk membuat turunan Joomla terpisah hanya untuk API

  • Hal-hal khusus domain (Misalnya: Jika Anda mendukung pendaftaran pengguna, maka email sambutan akan menyertakan tautan ke subdomain API). Ini dapat dikurangi dengan bermain-main dengan variabel server PHP.
  • Demikian pula jalur gambar dll harus benar, kecuali jika Anda menggunakan S3

Selain itu saya yakin tidak boleh ada masalah, karena itu akan terus dikembangkan sampai ada cara Joomla de-facto untuk membuat API.

Penafian: Saya adalah pengelola https://github.com/techjoomla/com_api

Ashwin Date
sumber
Terima kasih atas jawaban Anda, senang mengetahui bahwa Anda terus mengembangkannya. Saya suka cara com_api bekerja tetapi saya ingin mencoba dan menghindari menjalankan seluruh CMS Joomla hanya untuk menyediakan API. Jika saya tidak bisa mendapatkan kerangka kerja yang saya butuhkan, saya pasti akan terus menggunakan ini.
Joe P
1

Dua sen saya:

Untuk seorang pelanggan saya perlu mengakses konten situs joomla-nya dari aplikasi telepon pintar. Konten ditempatkan di com_content jadi awalnya saya menggunakan feed obRSS. Kemudian saya menemukan jBackend di JED dan mencobanya. Ini tersedia di sini http://www.selfget.com/products/jbackend.html Kode ini tampak sangat bersih dan mendukung permintaan RESTful dan respons JSON. Dokumentasi online terbatas tetapi cukup jelas untuk teknisi. Sayangnya saat ini hanya mendukung com_user dan com_content tetapi dalam kasus saya ini tidak masalah. Sekarang saya harus menggunakannya untuk pelanggan lain yang menggunakan K2 CCK. Saya mencoba membuat plugin khusus untuk mengakses artikel dan kategori K2, tetapi setidaknya saya akan menyimpan seluruh kode manajemen permintaan. Saya mengirim email ke pengembang dan dia bilang dia sedang mengerjakan modul tambahan seperti K2 dan forum Kunena juga, itu ekstensi yang sangat menjanjikan.

WizKid
sumber
1

Situs berikut tampaknya menjadi sumber yang bagus untuk panduan tentang cara membangun API JSON yang tenang:

http://jsonapi.org/

Untuk apa nilainya, saya juga meluncurkan produk API untuk Joomla 3.4.x bernama cAPI http://getcapi.org .

Perbedaan utama di sini adalah bahwa saya mempertaruhkan kerangka perutean saya pada kerangka mikro Slim. Ini memungkinkan saya untuk memasukkan kerangka kerja yang sudah dicoba dan diuji, kuat ke dalam contoh aplikasi Joomla. Saya juga telah membuat arsitektur plugin untuk rute layanan, membuka pintu untuk pengaya dan keamanan layanan web.

Anda dapat menemukan informasi tambahan dari posting lain, di sini:

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

Beri tahu saya jika Anda memiliki pertanyaan.

Steve Tsiopanos
sumber