私はRESTオブジェクトの配列を受け入れることができるはずのAPIを設計しています、例えば
[
{
'name': 'Alice',
'age': 15
},
{
'name': 'Bob',
'age': 20
},
...
]
実際、APIは単一のオブジェクトを受け入れるためのメソッドを持つことができ、それはサイクルで呼び出されます。ただし、パフォーマンス上の理由から、POST 1つのリクエストで複数のオブジェクトを使用したいと考えています。
そうするための最もエレガントな方法は何ですか?これまでのところ、私の唯一のアイデアは、次のようなJSONを使用することです。
post_params = { 'data' : to_json_string([ { 'name' : 'Alice', 'age' : 15 },
{ 'name' : 'Bob', 'age' : 20 },
...
])
};
post(url, post_params);
これは大丈夫ですか、それとも完全に異なるアプローチを使用する必要がありますか?
基本的に、私が探していた答えは:
Content-Type: application/x-www-form-urlencoded
を使用する必要はありません。代わりに、Content-Type: application/json
を使用する必要があります。HTTPリクエスト全体は次のようになります。
POST /whatever HTTP/1.1
Host: api.example.com
Content-Type: application/json
[
{
'name': 'Alice',
'age': 15
},
{
'name': 'Bob',
'age': 20
},
...
]
data
プロパティを使用して、配列を別のオブジェクトにラップする必要はありません。配列自体は有効なJSONです。
post_params = JSON.stringify([ { 'name' : 'Alice', 'age' : 15 },
{ 'name' : 'Bob', 'age' : 20 },
...
]);
post(url, post_params);
APIがこの配列も想定していることを確認してください。