Jak zbudować RESTful API z Joomla


11

Buduję rozszerzenia Joomla od wersji 1, ale wkrótce muszę uruchomić interfejs API na żywo, który zbudowałem i używam od dłuższego czasu. Obecnie używam Joomla 2.5 i napisałem wtyczki dla tego systemu:

https://github.com/techjoomla/com_api

Przed uruchomieniem chciałbym w jak największym stopniu udoskonalić system. Ten komponent API dopiero niedawno zaczął być aktualizowany do pracy z Joomla v3, więc obecnie uniemożliwia aktualizację strony. Myślę też, że oddzielenie publicznego interfejsu API od portalu użytkownika ma sens, ponieważ nie ma korzyści z tego, że jest to zintegrowane rozszerzenie, ponieważ API będzie używane przez aplikacje mobilne.

Obecny plan obejmuje przebudowę interfejsu API w subdomenie, co pozwoli nam zaktualizować portal użytkowników. Czytałem o nowym frameworku Joomla, który wygląda ekscytująco. Czy byłoby to odpowiednie do budowy interfejsu API RESTful dla naszych aplikacji mobilnych? Jeśli tak, czy są to wskazówki, jak zacząć? Czytałem, że FoF można wykorzystać do budowy API, czy byłby to dobry wybór? Widziałem projekt Kickstarter zamierzający zbudować właśnie taki interfejs API, czy to potencjalna opcja? Czy powinienem po prostu usunąć bieżącą witrynę 2.5 dla subdomeny, aby działała tylko funkcja API?

Wszelkie sugestie dotyczące najlepszego podejścia do budowy opartego na Joomla RESTful API do interakcji mobilnych będą mile widziane.


1
Właśnie widziałem te nowe rozszerzenia w katalogu rozszerzeń Joomla, które mogą Ci się przydać: extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Odpowiedzi:


8

Z mojego doświadczenia:

O frameworku Joomla

Próbowałem zbudować prosty interfejs API RESTful do zintegrowanego uwierzytelniania opartego na frameworku Joomla. Jest dość złożony, zupełnie inny niż obecny interfejs API Joomla. Nie można też wkleić bieżącego kodu źródłowego, a biblioteki mogą zwracać nieoczekiwane wyniki (wykonywane w innym środowisku). Zaczekam, aż będzie dostępny więcej kodu i będzie on miał większą adaptację.

O środowisku FOF

Obecnie rozwijam się tylko z FOF. Całkiem przydatne, dużo RAD, automatyczna konfiguracja itp .; a kod jest zgodny z J2.5 / J3.

W przypadku interfejsu API RESTful możesz po prostu pobrać przykład todo-fof i dodać kontroler z interfejsem API. Przykład:

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

}

Możesz także skorzystać z automatycznych widoków Json. Np. Widok przeglądania (default.php) może generować dane wyjściowe Json (tylko dodawanie default_json.phpi echo json_encode...)


1
Jedyny problem z FOF, jaki rozumiem, to to, że nie jest on już obsługiwany przez programistę w jądrze Joomla… chociaż rozumiem, że wersja FOF została ponownie rozwidlona i idzie naprzód, tylko nie w ramach Joomla?
Craig

Masz rację, ale to wcale nie jest problem. FOF Joomla jest dość stabilny (jeszcze nie uaktualniłem moich rozszerzeń). Nowy F0F musi zostać zainstalowany jako nowa biblioteka (... na końcu musisz zawsze zainstalować go w J2.5 ... a instalator jest gotowy na J3). W tej chwili 99% kodu źródłowego nie uległo zmianie.
Anibal

Dzięki za sugestie, zgadzam się, że środowisko Joomla jest dość złożone, ale lubię uczyć się z niego korzystać. Chciałem spróbować użyć frameworka dla mojego interfejsu API, ponieważ jest to dość proste, ale nie mogę go uzyskać, aby zwrócił poprawny nagłówek dla JSON. Zacząłem kolejne pytanie na ten temat.
Joe P

6

com_api jest zdecydowanie dobrym sposobem na zbudowanie usług REST dla Twojej witryny, jeśli samo rozszerzenie nie jest oparte na FOF / RAD. Uważaj jednak na kilka gotchas, jeśli planujesz utworzyć osobną instancję Joomla tylko dla API

  • Rzeczy specyficzne dla domeny (np .: jeśli wspierasz rejestrację użytkowników, powitalna wiadomość e-mail zawierałaby link do subdomeny interfejsu API). Można to złagodzić, grając ze zmienną serwera PHP.
  • Podobnie ścieżki obrazu itp. Muszą być poprawne, chyba że używasz S3

Poza tym jestem pewien, że nie powinno być żadnych problemów, ponieważ będą one nadal rozwijane, dopóki nie będzie de facto sposób tworzenia interfejsów API w Joomla.

Oświadczenie: Jestem opiekunem https://github.com/techjoomla/com_api


Dzięki za odpowiedź, wspaniale jest wiedzieć, że nadal ją rozwijasz. Uwielbiam to, jak działa com_api, ale chciałem uniknąć uruchamiania całego CMS Joomla tylko po to, aby zapewnić interfejs API. Jeśli nie uda mi się uruchomić frameworka tak, jak potrzebuję, na pewno będę go nadal używać.
Joe P

1

Moje dwa centy:

Dla klienta musiałem uzyskać dostęp do zawartości jego strony Joomla z aplikacji na smartfona. Zawartość została umieszczona w com_content, więc początkowo korzystałem z kanałów obRSS. Potem znalazłem jBackend na JED i wypróbowałem. Jest dostępny tutaj http://www.selfget.com/products/jbackend.html Kod wydaje się bardzo czysty i obsługuje żądania RESTful i odpowiedzi JSON. Dokumentacja online jest ograniczona, ale wystarczająco jasna dla techników. Niestety w tej chwili obsługuje tylko com_user i com_content, ale w moim przypadku było w porządku. Teraz powinienem użyć go dla innego klienta, który używa K2 CCK. Próbuję zbudować niestandardową wtyczkę, aby uzyskać dostęp do artykułów i kategorii K2, ale przynajmniej zachowam cały kod zarządzania żądaniami. Wysłałem e-mail do programisty, który powiedział mi, że pracuje także nad dodatkowymi modułami, takimi jak K2 i forum Kunena, jest to bardzo obiecujące rozszerzenie.


1

Następująca witryna wydaje się być doskonałym źródłem wskazówek dotyczących tworzenia interfejsu API RESTful JSON:

http://jsonapi.org/

Za to, co jest warte, uruchamiam również produkt API dla Joomla 3.4.x o nazwie cAPI http://getcapi.org .

Podstawowym wyróżnikiem jest to, że postawiłem swoją strukturę routingu na mikrostrukturę Slim. To pozwala mi na włączenie sprawdzonej już, solidnej struktury do instancji aplikacji Joomla. Stworzyłem również architekturę wtyczek dla tras usług, otwierając drzwi dla dodatków i bezpieczeństwa usług internetowych.

Możesz znaleźć dodatkowe informacje z innych postów tutaj:

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

Daj mi znać, jeśli masz jakieś pytania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.