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}