Разместить массив объектов в REST API

Я разрабатываю REST API, который должен иметь возможность принимать массив объектов, скажем

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

действительно, API может иметь метод для принятия одного объекта, который будет вызываться в цикле. Однако по соображениям производительности я хочу опубликовать несколько объектов в одном запросе.

какой самый элегантный способ сделать это? Пока моя единственная идея-использовать JSON, например:

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

это нормально, или я должен использовать совершенно другой подход?

2 ответов


нет необходимости обертывать массив в другой объект с помощью data собственность. Массив сам по себе является допустимым JSON:

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

просто убедитесь, что ваш API также ожидает этот массив.


В основном, ответ, который я искал, был:

  1. нет необходимости использовать Content-Type: application/x-www-form-urlencoded что является стандартным в web; вместо этого,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
      },
      ...
    ]