J'ai fait ce qui suit dans mon application Sinatra:
disable :show_exceptions
disable :raise_errors
error do
haml :error, :locals => {:error_message => request.env['sinatra.error'].to_s}
end
get '/error' do
raise "ERROR!!"
end
Si je visite /error
J'ai un 500 - Internal Server Error
Code de réponse, qui est Dieu et voulait. Mais comment puis-je changer le code, par exemple 404 ou 501?
la réponse :
disable :show_exceptions
disable :raise_errors
get '/error' do
halt(404,haml(:error, :locals => {:error_message => request.env['sinatra.error'].to_s}))
end
Quelque chose comme raise 404
soulève une erreur comme raise ZeroDivisionError
Serait, qui provoque une erreur de votre application de 500 serveur interne. Le moyen le plus simple de renvoyer une erreur spécifique consiste à utiliser status
get '/raise404' do
status 404
end
Vous pouvez également ajouter un corps de réponse personnalisé avec body
get '/raise403' do
status 403
body 'This is a 403 error'
end
J'utilise ceci en bloc
[.____] si "condition" alors faire quelque chose [.____] Halt 500, "Message d'erreur" [.____] # seulement sans erreur [.____] erb: my_template [.____]
En cas d'erreur, mon journal est comme ça
[.____] http/1.1 "500 13 0,1000
À la place de raise "ERROR!!"
, essayez juste de faire error 404
ou error 501
Avec le message d'état optionnel après le code d'état.
Mise à jour: si vous définissez votre gestionnaire d'erreur comme error 400..501 do...
Par exemple, vous pouvez utiliser error 501 "ERROR!!"
dans ton "/error"
route. Cela mettra également votre "erreur !!" message en env['sinatra.error'].message
.