web-dev-qa-db-ja.com

JoomlaでRESTful APIを構築する方法

私は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を構築するための最良のアプローチに関する提案は、高く評価されます。

11
Joe P

私の経験から:

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.phpecho json_encode ...を追加するだけです)

8
Anibal

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

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

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

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

6
Ashwin Date

私の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
WizKid

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

http://jsonapi.org/

それだけの価値があるので、Joomla 3.4.x用のcAPI http://getcapi.org と呼ばれるAPI製品もローンチします。

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

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

https://stackoverflow.com/questions/26340885/rest-api-for-joomla-3-0/32706378#32706378

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

1
Steve Tsiopanos