JSON для передачи нескольких записей в запрос POST к API рельсов создать действие? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть простой API, построенный с использованием

rails new my_api --api

Тогда

rails g scaffold Model name age

Я могу сделать новую запись, используя curl POST-запрос, вот так

curl -H "Accept: application/json" -H "Content-type: application/json" -d '{"name": "Fred", "age": "5"}' "http://localhost:3000/model_name"

Вопрос

Можно ли отправить несколько новых записей в одном запросе POST? И если да, то как должен выглядеть JSON?

Что я пробовал до сих пор

Я пробовал варианты {"name": "Fred", "age": "5"}, например {"name": ["Fred", "Mary"], "age": ["5", "6"]}

API не отклоняет этот JSON, вместо этого он создает 1 запись (не 2), а значения nil вместо фактических данных.

Примечание

Текущий код контроллера

  def create
    @model = Model.new(model_params)

    if @model.save
      render json: @model, status: :created, location: @model
    else
      render json: @model.errors, status: :unprocessable_entity
    end
  end

1 Ответ

2 голосов
/ 10 июля 2019

Краткий ответ, да.

Вы создали API, вы точно определили, что получит этот запрос POST и как он будет обрабатываться.Метод Rails scaffold автоматически сгенерированный create не будет принимать несколько записей одновременно в JSON.Вы должны открыть файл controller, созданный rails scaffold, и изменить его так, чтобы он принимал несколько записей.

И небольшая подсказка, попробуйте эту структуру для JSON с несколькими записями:

[{"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}]
...