Pet*_*own 36 api rest json ruby-on-rails ruby-on-rails-3.2
我有一个API,可以让你销毁一个对象.我不确定的部分是在记录被销毁后应该呈现的JSON.这里有几个选项,但我不确定最佳做法是什么.
版本1:
返回204状态的空对象
def destroy
item = current_user.current_cart.items.find(params[:id])
item.destroy
render json: {}, status: :no_content
end
Run Code Online (Sandbox Code Playgroud)
版本2:
退货,即使它已被销毁
def destroy
item = current_user.current_cart.items.find(params[:id])
item.destroy
render json: item
end
Run Code Online (Sandbox Code Playgroud)
这些中的一个优先于另一个吗?是否有一个我没想过的版本可能更受欢迎?
ush*_*sha 27
对于删除请求,http状态代码200或204意味着资源已成功删除.
9.7删除
如果响应包括描述状态的实体,则成功响应应为200(OK),如果操作尚未执行,则应为202(已接受);如果操作已颁布但响应不包括,则应为204(无内容)一个实体.
因此,您可以使用200状态代码返回对象,也可以使用204状态代码返回空响应
And*_*art 27
成功状态204(无内容)似乎是合适的.正如204所暗示的那样,一定不能有一个响应体,可以用或者更有吸引力:render :nothing, status: :no_content
def destroy
item.destroy
head :no_content
end
Run Code Online (Sandbox Code Playgroud)
编辑: render :nothing自Rails 5.1以来已被弃用并被删除.相反,你可以使用render body: nil, status: :no_content.
| 归档时间: |
|
| 查看次数: |
10292 次 |
| 最近记录: |