проверка параметров post в контроллере api

#ruby-on-rails #rails-api

#ruby-on-rails #rails-api

Вопрос:

Есть ли рекомендуемый способ проверки любых входных параметров в действии контроллера для rails 4 API?

Я знаю, что могу внести параметры в белый список, но что, если я хочу проверить, предоставили ли они требуемые значения?

Пожалуйста, предположите, что не будет никаких проверок модели и что я должен проверить POST JSON в контроллере.

В качестве примера давайте воспользуемся примером JSON для создания пользователя.

 {
  "person": {
    "firstname": "Joe",
    "lastname": "Bloggs",
    "age": "99",
    "starsign": "virgo",
    "address": {
      "line1": "123 street",
      "city": "NYC",
      "zip": "90210"
    }
  }
}
 

Допустим, все эти поля были обязательными, каков был бы наилучший способ проверить, что они имеют значение (забудьте о проверке numericality ect, просто наличие). А также возвращает сообщение об ошибке, если один или несколько отсутствуют.

Я знаю, что проверка модели была бы лучшим способом сделать это, если бы я создавал такого человека:

 Person.new(params)
 

но я на самом деле этого не делаю, поэтому мне нужен другой способ проверки значений!

Ответ №1:

https://github.com/ruby-json-schema/json-schema удовлетворит вашу потребность. Он может проверять данные json в зависимости от предоставленной схемы.

Комментарии:

1. Спасибо, попробую это

Ответ №2:

Что бы вы сделали в действии контроллера, это написать что-то вроде

  params.require(:person).require(:firstname, :lastname)
 

Это выдаст ошибку, если параметр person не указан, тогда вам, вероятно, следует перехватить эту ошибку и предварительно сформировать желаемое поведение, которое должно включать уведомление пользователя о том, что параметр person не был предоставлен.

Комментарии:

1. Я не знал, что это возможно, и я проверю и посмотрю, как это работает..

2. да, я использовал это на днях для проверки конечных точек для rails API