web-dev-qa-db-ja.com

Joomla拡張機能のAPIを作成する

外部クライアントがカスタム拡張データベーステーブルでアクションを実行できるように、APIを作成する必要があります。

正しいアプローチは何でしょうか?

  1. https://api.joomla.org/cms-3/ を使用する必要がありますか?どうやって?!例は見つかりませんでした。
  2. APIを別のディレクトリ(/ api /など)に配置し、JoomlaフレームワークをPHPに含めますか?
  3. または、com_myapiなどのMVC拡張機能を作成しますか?
  4. RESTまたは他の方法を使用する必要がありますか?
  5. Com_apiは良いスタートでしょうか? ( https://github.com/techjoomla/com_api )ただし、ドキュメントは見つかりませんでした…

外部クライアントは次のことができる必要があります。

PUT-サーバー上の既存のオブジェクトを変更する
POST-サーバー上に新しいオブジェクトを作成します
DELETE-サーバー上のオブジェクトを削除します

次に、応答(OK、または特定のエラー)を返す必要があります。 JSON?

または…。他の明らかな優れた解決策を見落としているか?

どんな提案も大歓迎です!

いくつかのオプションがありますが、私はjBackend拡張機能を使用しています。

JBackendのいくつかの利点。

  • きれいなJSON
  • 開始するための優れた定型コードが付属しています
  • APIキーを管理しますAPIエンドポイントコードがデータを送受信します
  • 基本的に、多くの一般的なCMS関数をAPIエンドポイントとして公開します
  • APIキーを管理するための通常のJoomla管理UIがあります
  • ドキュメントは良いです
  • コードはよく構造化され、読みやすい

Joomlaをモバイルアプリのバックエンドにできるように、私たちはしばらくそれを使用しています。私は先週のJ&Beyondでこれについて講演しました http://jandbeyond.org/programme.html?view=session&id=45&return=L3Byb2dyYW1tZS5odG1s

JBackendの詳細は http://www.selfget.com/products/jbackend.html にあります。同様のことを行うRedComponent拡張機能もあると思います。

J&Beyondにいる間、私はJoomla 3.6とBeyondに関するChris Davenportの講演に出席しました。この講演には、3.6に登場する可能性のあるJoomlaのAPI機能についての詳細がいくつかありました- http://jandbeyond.org/programme.html?view=session&id= 74&return = L3Byb2dyYW1tZS5odG1s

9
AndyGaskell

クリーンRESTのようなURLが必要な場合:[GET] api/articles/1

あなたは私のプロジェクトを見ることができます: https://github.com/pvullioud/japi

または、プラグインを使用しない場合は、ここに簡単な例があります https://github.com/pvullioud/joomla-slimframework

既製の拡張機能が受け入れられる場合、私の提案は Headless Joomlaおよび codingmallのVirtuemartプラグイン です。次のような単純なREST呼び出しを使用して、Joomlaビューの詳細情報を提供します。

https://www.example.com/?cmjspkjson_opt=10

出力:

{
    "item": {
        "id": "1",
        "asset_id": "61",
        "title": "Getting Started",
        "alias": "getting-started",
        "introtext": "It's easy",
        "fulltext": "",
        "state": "1",
        "catid": "2",
        "created": "2019-08-29 14:35:43",
        "created_by": "581",
        ...
    },
    "pageclass_sfx": ""
}

複雑な呼び出しの例:

https://www.example.com/index.php?option=com_virtuemart&view=category&id=3&cmjspkjson_opt=10&reqobj[]=category.children

これは完全なjson出力の代わりに必要な部分のみを返します。

リクエストの数を節約するために、複数のreqobjパラメータがある場合があります。

免責事項:私はCodi​​ngMall.comに技術支援を提供します。