Rack::Test::Methods, устанавливающий id при использовании метода get

Я борюсь с методами API из Rack::Test. Предоставление параметров ресурса имеет смысл для метода post, но для get, похоже, нет. Когда я хочу получить ресурс с определенным идентификатором, я пытаюсь сделать запрос:

get "/resources/#{id}", {Accept: Mime::JSON}

и это на самом деле работает, но это не так, если я предоставляю идентификатор в качестве второго аргумента:

get '/resources', id: id, {Accept: Mime::JSON} 
# or
get '/resources', {id: id}, {Accept: Mime::JSON}
# omits the id - just fetches all the resources

Как мне указать идентификатор в качестве отдельного параметра? Встраивание его в строку выглядит ужасно.

1 ответ

Решение

Параметр секунд определяет полезную нагрузку запроса. GET не имеет полезной нагрузки, так как вы не можете отправить какие-либо данные при выполнении GET запрос.

В запросе get полезная нагрузка ключ / значение представляется строкой запроса (плюс URI), поэтому первый способ - это путь.

Если вместо GET вы используете другой метод, такой как POST, PUT, DELETE или же PATCHтогда второй параметр представляет полезную нагрузку запроса.

patch "/resources/#{id}", { foo: "bar" }.to_json, {Accept: Mime::JSON} 
Другие вопросы по тегам