Joomla ile RESTful API nasıl oluşturulur?


11

V1'den beri Joomla uzantıları oluşturuyorum, ancak yakında oluşturduğum ve bir süredir kullandığım bir API'yi canlı olarak almam gerekiyor. Şu anda Joomla 2.5 kullanıyorum ve bu sistem için eklentiler yazdım:

https://github.com/techjoomla/com_api

Yayına geçmeden önce sistemi olabildiğince kanıtlamak istiyorum. Bu API bileşeni, Joomla v3 ile çalışacak şekilde yeni yükseltilmeye başlandı, bu nedenle sitenin yükseltilmesini engelliyor. Ayrıca, API'nin mobil uygulamalar tarafından kullanılacağı için entegre bir uzantı olmasının hiçbir faydası olmadığından, genel API ve kullanıcı portalını ayırmanın mantıklı olduğunu düşünüyorum.

Mevcut plan, kullanıcı portalını yükseltmemize izin verecek bir alt alanda API'yi yeniden oluşturmaktır. Heyecan verici görünen yeni Joomla çerçevesini okudum. Bu, mobil uygulamalarımız için RESTful API oluşturmak için uygun olur mu? Eğer öyleyse, başlamak için ipuçları var mı? FoF'ın bir API oluşturmak için kullanılabileceğini okudum, bu iyi bir seçim olur mu? Kickstarter projesinin tam olarak bu tür bir API oluşturmak istediğini gördüm, bu potansiyel bir seçenek mi? Sadece API'yı çalıştıracak şekilde alt alan için geçerli 2.5 sitesini geri almalı mıyım?

Mobil etkileşim için Joomla tabanlı bir RESTful API oluşturmaya yönelik en iyi yaklaşımla ilgili öneriler çok takdir edilecektir.


1
Joomla Uzantı Dizini'nde sizin için kullanışlı olabilecek yeni uzantıları gördüm: extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Yanıtlar:


8

Deneyimlerimden:

Joomla çerçevesi hakkında

Joomla çerçevesine dayalı entegre kimlik doğrulaması için basit bir RESTful API oluşturmaya çalıştım. Oldukça karmaşık, mevcut Joomla API'sinden oldukça farklı. Ayrıca, geçerli kaynak kodu kopyalanamaz ve kitaplıklar beklenmedik sonuçlar döndürebilir (farklı bir ortamda yürütülür). Ben daha fazla kod kullanılabilir olana kadar bekleyeceğim, ve daha büyük benimseme vardır.

FOF çerçevesi hakkında

Şu anda sadece FOF ile gelişiyorum. Oldukça kullanışlı, çok sayıda RAD, otomatik yapılandırma, vb; ve kod J2.5 / J3 ile uyumludur.

RESTful API için, todo-fof örneğini alabilir ve API ile bir denetleyici ekleyebilirsiniz. Misal:

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();

}

Ayrıca, otomatik json görünümlerinden de yararlanabilirsiniz. Örneğin, bir tarama görünümü (default.php) json çıktısı oluşturabilir (sadece ekleme default_json.phpve echo json_encode...)


1
Anladığım kadarıyla FOF ile ilgili tek sorun, artık Joomla çekirdeğindeki geliştirici tarafından desteklenmiyor ... ancak FOF'un bir versiyonunun yeniden çatallandığını ve devam ettiğini anlıyorum, sadece Joomla'nın bir parçası değil mi?
Craig

Haklısın, ama bu hiç sorun değil. Joomla'nın FOF'u oldukça kararlı (henüz uzantılarımı yeni sürüme geçirmedim). Yeni F0F yeni bir kütüphane olarak kurulmalıdır (... sonunda her zaman J2.5'e kurmanız gerekir ... ve yükleyici J3 için hazırdır). Şu anda, kaynak kodun% 99'u değişmemiştir.
Anibal

Önerileriniz için teşekkürler, Joomla Framework'ün oldukça karmaşık olduğunu kabul ediyorum, ancak nasıl kullanılacağını öğrenmekten keyif alıyorum. Oldukça basit ama JSON için doğru üstbilgi döndürmek için alamadım API benim çerçeve kullanmayı denemek istedim. Bununla ilgili başka bir soruya başladım .
Joe P

6

com_api, uzantının kendisi FOF / RAD tabanlı değilse, siteniz için REST hizmetleri oluşturmanın kesinlikle iyi bir yoludur. Ancak, yalnızca API için ayrı bir Joomla örneği oluşturmayı planlıyorsanız birkaç sorchas konusunda dikkatli olun

  • Etki alanına özgü şeyler (Örn: Kullanıcı kaydını destekliyorsanız, hoş geldiniz e-postası API alt alanına bir bağlantı içerir). Bu, PHP sunucu değişkeni ile oynayarak hafifletilebilir.
  • S3 kullanmıyorsanız benzer şekilde görüntü yollarının vb. Doğru olması gerekir.

Bunun dışında herhangi bir sorun olmaması gerektiğine eminim, çünkü API'ları oluşturmanın fiili bir Joomla yolu olana kadar geliştirilmeye devam edecek.

Yasal Uyarı: Ben https://github.com/techjoomla/com_api


Cevabınız için teşekkürler, onu geliştirmeye devam ettiğinizi bilmek harika. Com_api'nin nasıl çalıştığını seviyorum ama sadece bir API sağlamak için tüm Joomla CMS'yi çalıştırmayı denemek istedim. Çerçeveyi istediğim gibi çalıştıramazsam, kesinlikle kullanmaya devam edeceğim.
Joe P

1

Benim görüşüm:

Bir müşteri için joomla sitesinin içeriğine bir akıllı telefon uygulamasından erişmem gerekiyordu. İçerik com_content içine yerleştirildi, bu yüzden başlangıçta obRSS yayınları kullandım. Sonra JBackend'i JED'de buldum ve denedim. Burada kullanılabilir http://www.selfget.com/products/jbackend.html Kod çok temiz görünüyor ve RESTful istekleri ve JSON yanıtlarını destekler. Çevrimiçi dokümantasyon sınırlı ancak teknisyenler için yeterince açık. Ne yazık ki şu anda sadece com_user ve com_content destekler ama benim durumumda bu iyiydi. Şimdi K2 CCK kullanan başka bir müşteri için kullanmalıyım. K2 makalelerine ve kategorilerine erişmek için özel bir eklenti oluşturmaya çalışıyorum, ancak en azından tüm istek yönetimi kodunu kaydedeceğim. Geliştiriciye bir e-posta gönderdim ve bana K2 ve Kunena forumu gibi ek modüller üzerinde çalıştığını söyledi, çok umut verici bir uzantı.


1

Aşağıdaki site, RESTful JSON API'sinin nasıl oluşturulacağına ilişkin yönergeler için mükemmel bir kaynak gibi görünüyor:

http://jsonapi.org/

Değeri ne olursa olsun, Joomla 3.4.x için cAPI http://getcapi.org adlı bir API ürünü de piyasaya sürüyorum .

Buradaki birincil farklılaştırıcı, yönlendirme çerçevemi İnce mikro çerçeve üzerine yerleştirdiğimdir. Bu, zaten denenmiş ve test edilmiş sağlam bir çerçeveyi Joomla uygulama örneğine dahil etmeme izin veriyor. Eklentiler ve web hizmetleri güvenliği için kapıyı açarak servis yolları için bir eklenti mimarisi oluşturdum.

Diğer yayınlardaki ek bilgileri burada bulabilirsiniz:

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

Herhangi bir sorunuz varsa bize bildirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.