在 Sinatra 中,如果我创建一个简单的端点,例如:
post '/users' do
'posted'
end
curl -v -X GET http://localhost:8080/users
返回 404,而我期望的是 405。
我查看了文档,但没有找到任何内容。在深入研究源代码之前,有人知道如何在 Sinatra 中处理和返回 405 吗?有点像 not found 方法:
not_found do
'Not found - ' + request.path
end
最佳答案
你得到了一个 404,因为 sinatra 找不到获取路由/users。如果你想返回自定义错误,你可以查看 Halt
抛出一个错误
您可以像这样在 get/users 上返回 405:
get "/users" do
halt 405
end
要一次捕获多个 http 动词,您可以使用 multi route
require 'sinatra'
require "sinatra/multi_route"
route :get, :post, '/foo' do
# "GET" or "POST"
p request.env["REQUEST_METHOD"]
end
# Or for module-style applications
class MyApp < Sinatra::Base
register Sinatra::MultiRoute
route :get, :post, '/foo' do
# ...
end
end
处理错误
如果你想在 sinatra 中处理错误代码,你可以简单地处理 404 错误:
not_found do
'This is nowhere to be found.'
end
在您的情况下处理 405 错误:
error 405 do
'Access forbidden'
end
关于ruby - 在 Sinatra 中处理 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408609/