你有404,因爲sinatra無法找到獲取路線/用戶。如果你想返回一個自定義錯誤,你可以看Halt
拋出一個錯誤
的你可以獲取返回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
source
個
手柄錯誤
如果你想處理在西納特拉錯誤代碼可以爲404錯誤簡單做:
not_found do
'This is nowhere to be found.'
end
在你的情況處理405錯誤:
error 405 do
'Access forbidden'
end
所以我需要寫一個「暫停405」?這聽起來不像一個優雅的解決方案。從技術上講,資源/路線存在,只是動詞是錯誤的。這就是爲什麼我期望405.爲405的實現一個捕獲所有解決方案必須有一個更好的方法。 – Bealer 2013-05-07 09:19:27
我認爲多路線是您的問題的優雅解決方案。 – 2013-05-07 10:06:56
嗯,仍然沒那麼優雅。這意味着我必須爲每個端點使用route:get,:put:delete,:patch,:options,:and_so_on來玷污我的代碼。但總比沒有好,儘管我寧願看看問題的核心問題是否可以解決。 – Bealer 2013-05-07 13:12:12