Виноградный POST запрос на получение JSON
У меня проблемы с виноградом. Я попытался заглянуть в их документы и погуглить. Я не мог найти решение или образец по этому поводу.
Допустим, я отправляю этот формат в запрос POST винограда:
{
"preferences": {
"play": {
"weekdays": "5",
"weekend": "8"
},
"grow": {
"weekdays": "4",
"weekend": "8"
}
}
}
Вопросы:
- Как настроить параметры Grape для получения этого сообщения? Я пробовал что-то вроде этого:
params do optional :preferences, type: Hash do optional :play do optional :weekdays optional :weekend end optional :grow, type: Hash do optional :weekdays optional :weekend end end end
- Я использую почтальон, чтобы сделать POST на моем Chrome. У меня вопрос: как мне установить хэш-параметры? У почтальона есть 3 варианта: data-data, form-urlencoded и raw. Я пробовал с form-data и raw (json), он не работает для raw json, он выдал ошибку, говорящую, что запрошенный тип содержимого 'text/plain' не поддерживается
Любая идея, как я могу исправить эти проблемы?
большое спасибо
1 ответ
Ответ на вопрос 1: Если все параметры являются необязательными, вам даже не нужно params
блок. Избавьтесь от этого и, например, используйте params[:preferences][:play][:weekdays]
чтобы получить доступ к атрибуту будних дней. Просто используйте ту же идею для доступа к другим значениям.
Ответ на вопрос 2: На Почтальоне, используйте RAW, но не забудьте установить заголовок Content-Type
в application/json
, Я написал код ниже, чтобы поиграть с этим примером.
require 'grape'
class API < Grape::API
version 'v1', :using => :header, :vendor => 'alienlabz', :format => :json
format :json
resource :preferences do
post do
puts params[:preferences][:play][:weekdays]
end
end
end
run API