1

Mule アプリケーションを使用して、HTTP エンドポイントによって呼び出される別のシステムからデータを取得していました。Java と jersey API を使用して、残りのコンポーネントを取得しました。

入力データの例を以下に示します。ここでは、キーと値は固定されておらず、ユーザーの要求によって異なる場合があります。配列のサイズは 2 から n エントリまで増加します。Mule および Java レスト ベースのコンポーネントで問題なく動作しています。

入力 JSON データ:

[
    {
        "Company": "BEG1",
        "Account": "10011",
        "Deptid": "111",
        "Location": "SM1",
        "Transaction Date": "2014-07-15",
        "Description": "Invoice1",
        "Debit": 0,
        "Credit": 13.46,
        "Invoice Nbr": "16824321"
    },
    {
        "Company": "BEG92",
        "Account": "10092",
        "Deptid": "222",
        "Location": "SL2",
        "Transaction Date": "2014-07-19",
        "Description": "Invoice End2",
        "Debit": 13.46,
        "Credit": 0,
        "Invoice Nbr": "168243292"
    }
]

RAML を使用して APIkit に移行する計画: 上記のケースの RAML テンプレートを作成するにはどうすればよいですか? キーは動的であるため、これは簡単ではないようです。

2) GET の同じアプローチで、get 要求のデータを取得します。キーとそれに対応する値が何であるかはわかりません。データを取得し、解析してユーザーに送信するだけでした。この状況で RAML テンプレートを作成するにはどうすればよいですか。RAML を使用したミュール APIkit はここで機能しますか?

私の既存のコード:

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<GLExport> postOperation(@Payload String content) throws ParseException {    
    JSONParser jsonParser = new JSONParser();
    Object jsonObjectInstance =null;
    jsonObjectInstance = jsonParser.parse(new StringReader(content));
    ...
    return glExportList;

<http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${glport}" path="QBJournalExport/QBGLRest" doc:name="HTTP"/>
<jersey:resources doc:name="REST"> 
    <component class="com.qb.rest.GLExportService"/>
</jersey:resources> 
4

1 に答える 1

4

あなたの質問は、RAML よりも JSON スキーマに関するものです。本質的に、JSON スキーマで不明なフィールドをサポートする方法を尋ねています。

答えは、次を追加することです。

"additionalProperties": true

JSON スキーマ オブジェクト定義に追加します。

一連のフィールドがわかっている場合は、それらをスキーマで明示的に宣言することを強くお勧めします。API のユーザーはこれに感謝します。

また、これらのフィールドの一部が存在することが保証されている場合は、それらにもマークを付けますrequired

APIkit は、追加のプロパティを問題なく処理できるはずです。

于 2015-02-26T00:01:56.690 に答える