POST请求应创建资源并返回" Location"标题指向创建的资源。
我使用带有rails的grape API,并问自己返回创建的资源URI的最佳方法是什么。 葡萄提供了一种获取资源URI而无需手动设置的方法吗?
resource :blup do
post '/' do
blup = Blup.create(first_name: 'Jamie')
if blup.present?
header 'Location', 'HERE blup URI'
end
end
end
答案 0 :(得分:0)
目前我还没有找到比这更好的东西:
header 'Location', "#{request.url}/#{blup.id}"
但只有在request.url是ressource根URI时才能工作。 (例如在POST请求中)
答案 1 :(得分:0)
虽然我不知道Grape为Ruby on Rails API添加了什么,但我遇到了同样的问题,我找到了答案here。 要在创建后在标题中指定位置,您可以添加:
render location: specific_thing_i_am_looking_for_url(@thing)
您可以通过运行
找到specific_thing_i_am_looking_for_urlrake routes