1

私が開発しているアプリの一部として、RESTful JSON API と他の多くの形式との間の変換を作成する必要があります。その意図は、API からの出力を変換して、SOAP などの異なる形式を使用する API や、要件が異なる他の REST ベースの API にさらに要求を送信できるようにすることです。

これを行う必要があると思われる種類のことのいくつかの例:

  • JSON出力を操作して、異なるキーを使用します(おそらくデータのサブセットのみ)
  • XML パケット/ドキュメントに変換する
  • 有効な SOAP リクエストに変換する
  • データを特定のファイルタイプ/構造 (csv など) として出力する

ここでどのようなアプローチを検討すべきか、本当に興味があります。これはかなり一般的な要求であるように思われるので、調べるべき特定のライブラリや既存のサービスがあるかどうかに興味があります。そのようなサービスが存在しない場合、理想的には、連携するように構成されたツールのユニバーサル セットを使用して、2 つの異なるサービスをマッピングできる共通の構造を作成したいと考えています。これは Laravel PHP アプリケーション内にあるため、Composer と互換性のあるライブラリはすべて機能します。

4

2 に答える 2

2

私のコメントに続いて:

"I am not aware of any such library to do this, but as a rough guide I think you probably want to create some kind of adapters which all use a common interface. These adapters can then be written to deal with the conversion you are trying to achieve via some open-source library. Manipulating the output might be a good excuse to use the decorator pattern :) Sorry I could not be of much more help."

私があなたが求めていると思うものの例は次のとおりです。

アダプターのインターフェース

interface DataConvertor
{
     public function convert(DataInterface $data);
}

渡すデータのインターフェイス (データは、作業するための共通のインターフェイスを持つオブジェクトでもあります)。

interface DataInterface
{
    /**
     * returns a json string 
     */
    public function asJson();
}

次に、サードパーティのライブラリで使用するアダプターを作成できます。

class SomeThirdPartyNameAdapter implements DataConvertor
{

    public function convert($data)
    {
         //some logic here to make my data object with a known asJon method
         //suitable for use for some 3rd party library, and use that library.


         $rawJson = $data->asJson();
         //manipulate this as needed ($compatibleData)

         $thirdPartyLib = new ThirdPartyLib();
         return $thirdPartyLib->thirdPartyMethod($compatibleData);
    }

}

明らかに、これは単なる大まかなガイドであり、抽象化できる部分が他にもある場合があります (たとえば、アダプターに DataConvertor インターフェイスを実装させるだけでなく、一部の機能を継承するために一部の抽象クラスを拡張したり、インターフェイスに追加する他のメソッドを追加したりします)。

お役に立てれば

于 2013-04-12T13:49:39.337 に答える
1

共通のインターフェースを使用していくつかのアダプターを作成することが優れたアプローチであるという Carl の意見は正しいです。次に、JSON を XML に、または JSON を CSV に変換するなどの実装を提供できます。

ただし、ソリューションとして Mule ESB も検討することを強くお勧めします。 http://www.mulesoft.org/

これは Java ベースのオープン ソース プロジェクトであり、非常に迅速かつ効率的な統合を行うことができます。たとえば、RESTful 呼び出しを行い、データを変換して特定の宛先 (CSV、SOAP 呼び出し、XML など) に送り出す「フロー」(Mule 用語) を作成できます。

Mule の本当のセールス ポイント (私にとって非常に効果的だった点):

  1. 非常に簡単に導入できます。パッケージを展開してサーバー上で実行できるTomcatのようなものと同様に機能します。

  2. トンとトンとトンのボイラープレート コードが既に作成されています。

  3. 無料で安定しています。彼らには多くの著名な顧客がいるため、かなりの戦いでテストされており、無料バージョンを本番環境で問題なく動作させることができました.

于 2013-04-11T19:18:52.820 に答える