Установите код состояния http 201 для ответа API в рельсах контроллера действий. - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в rails и создаю приложение Rails, которое будет функционировать как API. В настоящее время у меня нет моделей или базы данных, только контроллер Api::ProductController:

class Api::ProductController < ApplicationController

  def create
    Rails.logger.info "product was created and the parameters are #{product_params[:name]}, #{product_params[:age]}"
  end

  private

  def product_params
    params.permit(:name, :age)
  end
end

. По мере продолжения и написания запроса Rspec:


RSpec.describe Api::productsController, type: :request do

  it "creates a product" do
    post "/api/products", params: { name: "name", age: "22"}

    expect(response).to have_http_status(:created)
    expect(response.body).to include("product was successfully created.")
  end
end

Но когда я запускаю запрос rspec в командной строке, я получаю следующую ошибку:

Failure/Error: expect(response).to have_http_status(:created)
       expected the response to have status code :created (201) but it was :no_content (204)

Мой вопрос: как я могу установить код состояния: созданный (201)? Является ли метод Голова хорошим подходом? Любое решение или руководство будет оценено!

1 Ответ

0 голосов
/ 13 июня 2019

Обычно возвращается json-представление созданного элемента. Теперь нет возврата данных из вашего действия.

Попробуйте использовать render json: product_params.to_json, status: :created

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...