19

オブジェクトの配列を受け入れることができるREST APIを設計しています。

[
 {
   'name': 'Alice',
   'age': 15
 },
 {
   'name': 'Bob',
   'age': 20
 },
 ...
]

実際、API には、サイクルで呼び出される単一のオブジェクトを受け入れるメソッドを含めることができます。ただし、パフォーマンス上の理由から、1 つのリクエストで複数のオブジェクトを POST したいと考えています。

そうする最もエレガントな方法は何ですか?これまでのところ、私の唯一のアイデアは、次のような JSON を使用することです。

post_params = { 'data' : to_json_string([ { 'name' : 'Alice', 'age' : 15 },
                                          { 'name' : 'Bob',   'age' : 20 },
                                          ...
                                        ])
              };
post(url, post_params);

これで問題ありませんか、それともまったく別のアプローチを使用する必要がありますか?

4

2 に答える 2

22

dataプロパティを持つ別のオブジェクトで配列をラップする必要はありません。配列自体は有効な JSON です。

post_params = JSON.stringify([ { 'name' : 'Alice', 'age' : 15 },
                               { 'name' : 'Bob',   'age' : 20 },
                                  ...
                             ]);
post(url, post_params);

API がこの配列も想定していることを確認してください。

于 2013-07-27T16:05:07.177 に答える
10

基本的に、私が探していた答えは次のとおりです。

  1. Content-Type: application/x-www-form-urlencodedWeb の標準であるものを使用する必要はありません。代わりに、Content-Type: application/json使用する必要があります。
  2. HTTP リクエスト全体は次のようになります。

    POST /whatever HTTP/1.1
    Host: api.example.com
    Content-Type: application/json
    
    [
      {
        'name': 'Alice',
        'age': 15
      },
      {
        'name': 'Bob',
        'age': 20
      },
      ...
    ]
    
于 2014-07-07T11:05:35.170 に答える