POST массив объектов для REST API
Я проектирую REST API, который должен иметь возможность принимать массив объектов, например
[
{
'name': 'Alice',
'age': 15
},
{
'name': 'Bob',
'age': 20
},
...
]
В самом деле, API может иметь метод для принятия одного объекта, который будет вызываться в цикле. Однако по соображениям производительности я хочу POST несколько объектов в одном запросе.
Каков самый элегантный способ сделать это? Пока что моя единственная идея - использовать JSON, например:
post_params = { 'data' : to_json_string([ { 'name' : 'Alice', 'age' : 15 },
{ 'name' : 'Bob', 'age' : 20 },
...
])
};
post(url, post_params);
Это нормально, или я должен использовать совершенно другой подход?
Ответы
Ответ 1
В принципе, ответ, который я искал, был:
- Нет необходимости использовать
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
},
...
]
Ответ 2
Нет необходимости обертывать массив в другом объекте с помощью свойства data
. Массив сам по себе действителен JSON:
post_params = JSON.stringify([ { 'name' : 'Alice', 'age' : 15 },
{ 'name' : 'Bob', 'age' : 20 },
...
]);
post(url, post_params);
Просто убедитесь, что ваш API также ожидает этот массив.