JoomlaでRESTful APIを構築する方法


11

私はv1からJoomla拡張機能を構築してきましたが、私が構築してしばらく使用してきたAPIをすぐにライブで使用する必要があります。現在、Joomla 2.5を使用しており、このシステム用のプラグインを作成しています。

https://github.com/techjoomla/com_api

稼働する前に、できる限りシステムの将来を証明したいと思います。このAPIコンポーネントは、最近Joomla v3で動作するようにアップグレードされ始めたため、現在サイトのアップグレードを妨げています。また、APIがモバイルアプリで使用されるため、統合された拡張機能であることによるメリットがないため、パブリックAPIとユーザーポータルを分離することには意味があると思います。

現在の計画では、ユーザーポータルをアップグレードできるサブドメインでAPIを再構築します。エキサイティングに見える新しいJoomlaフレームワークについて読んでいます。これは、モバイルアプリ用のRESTful APIを構築するのに適していますか?もしそうなら、彼らは始めるためのヒントですか?私は、FoFを使用してAPIを構築できることを読みましたが、これは良い選択でしょうか?Kickstarterプロジェクトがまさにこの種のAPIを構築しようとしているのを見ましたが、それは潜在的なオプションですか?APIのみを実行するように、サブドメインの現在の2.5サイトを削除する必要がありますか?

モバイルインタラクション用のJoomlaベースのRESTful APIを構築するための最良のアプローチに関する提案は、高く評価されます。


1
Joomla Extensions Directoryでこの新しい拡張機能が見たことがあります
。extensions.joomla.org

回答:


8

私の経験から:

Joomlaフレームワークについて

Joomlaフレームワークに基づく統合認証用のシンプルなRESTful APIを構築しようとしました。これはかなり複雑で、現在のJoomla APIとはかなり異なります。また、現在のソースコードをコピーして貼り付けることはできません。また、ライブラリは予期しない結果(別の環境で実行される)を返す場合があります。より多くのコードが利用可能になり、より多くのコードが採用されるまで待ちます。

FOFフレームワークについて

現在、FOFのみで開発しています。かなり便利、多くのRAD、自動構成など。コードはJ2.5 / J3と互換性があります。

RESTful APIの場合は、todo-fof-exampleを取得して、APIでコントローラーを追加するだけです。例:

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

}

また、自動jsonビューを利用することもできます。たとえば、ブラウジングビュー(default.php)はjson出力を生成できます(ただ追加default_json.phpしてecho json_encode...)


1
私が理解しているFOFの唯一の問題は、Joomlaコアの開発者によってサポートされなくなったことです...私はFOFのバージョンがreforkされており、Joomlaの一部としてではないことを理解していますか?
クレイグ

あなたは正しいですが、それはまったく問題ではありません。JoomlaのFOFはかなり安定しています(まだ拡張機能をアップグレードしていません)。新しいF0Fは新しいライブラリとしてインストールする必要があります(...最後に、常にJ2.5にインストールする必要があります...そしてインストーラーはJ3の準備ができています)。現在、ソースコードの99%は変更されていません。
アニバル2014年

あなたの提案をありがとう、私はJoomlaフレームワークはかなり複雑であることに同意しますが、私はそれを使用する方法を学ぶことを楽しんでいます。非常に単純なAPIのフレームワークを使用してみたかったのですが、JSONの正しいヘッダーを返すことができません。私はそれについて別の質問を始めました。
Joe P

6

com_apiは、拡張自体がFOF / RADに基づいていない場合に、サイトのRESTサービスを構築するための優れた方法です。ただし、API専用のJoomlaインスタンスを個別に作成する場合は、いくつかの注意点に注意してください。

  • ドメイン固有のもの(例:ユーザー登録をサポートしている場合、ウェルカムメールにはAPIサブドメインへのリンクが含まれます)。これは、PHPサーバー変数をいじることで軽減できます。
  • 同様に、S3を使用しているのでない限り、画像パスなどは正しい必要があります

それとは別に、APIを作成するための事実上のJoomlaの方法ができるまで開発が続けられるので、問題はないと思います。

免責事項:私はhttps://github.com/techjoomla/com_apiのメンテナーです


あなたの答えをありがとう、あなたがそれを開発し続けていることを知るのは素晴らしいことです。私はcom_apiの仕組みが大好きですが、APIを提供するためだけにJoomla CMS全体を実行しないようにしたいと思いました。フレームワークが必要に応じて機能しない場合は、これを使用し続けます。
ジョーP

1

私の2セント:

顧客の場合、スマートフォンアプリからjoomlaサイトのコンテンツにアクセスする必要がありました。コンテンツはcom_contentに配置されたため、最初はobRSSフィードを使用しました。次に、JEDでjBackendを見つけて試してみました。こちらから入手できますhttp://www.selfget.com/products/jbackend.html コードは非常にクリーンで、RESTfulリクエストとJSONレスポンスをサポートしています。オンラインドキュメントは限られていますが、技術者にとっては十分に明確です。残念ながら現時点ではcom_userとcom_contentのみをサポートしていますが、私の場合はこれで問題ありません。これで、K2 CCKを使用する別の顧客に使用する必要があります。K2の記事とカテゴリにアクセスするカスタムプラグインを作成しようとしていますが、少なくともリクエスト管理コード全体を保存します。開発者にメールを送ったところ、K2やKunenaフォーラムなどの追加モジュールにも取り組んでいるとのことで、非常に有望な拡張機能です。


1

次のサイトは、RESTful JSON APIの構築方法に関するガイドラインの優れたリソースのようです。

http://jsonapi.org/

それだけの価値があるものとして、私はJoomla 3.4.x用のcAPI http://getcapi.orgと呼ばれるAPI製品も立ち上げています。

ここでの主な差別化要因は、ルーティングフレームワークをスリムマイクロフレームワークに賭けたことです。これにより、すでにテスト済みでテスト済みの堅牢なフレームワークをJoomlaアプリケーションインスタンスに組み込むことができます。また、サービスルートのプラグインアーキテクチャを作成し、アドオンとWebサービスセキュリティの扉を開きました。

ここで他の投稿から追加情報を見つけることができます:

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

ご不明な点がありましたらお知らせください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.