Mam aplikację internetową RoR 3.0, która działa jako dostawca OAuth API. Teraz w API chciałbym zwrócić prawidłowe kody błędów HTTP do konsumenta API. Jak mam to zrobic?Jak zwracać poprawne kody błędów HTTP z aplikacji Ruby on Rails
Oto przykład:
def destroy_oauth
@item = Item.find(params[:id])
if([email protected]? && @item.user_id == current_user.id)
@item.destroy
respond_to do |format|
format.js
format.xml
end
else
raise ActionController::RoutingError.new('Forbidden')
end
end
Tak więc, w przypadku błędu próbuję powrócić Zakazane kod 403. Mimo to, podczas uruchamiania tego, zawsze otrzymuję zwrot 404 Not Found. Jak mogę zwrócić prawidłowy kod?
Czy to w jakiś sposób konfigurowalne oprogramowanie serwera WWW?
Czy powinienem to zrobić również w przypadku odpowiedzi XML xml OAuth? –
Jako komentarz boczny, określenie tego rozszerzenia '.html' jest przestarzałe (patrz dyskusja na https://github.com/rails/rails/issues/7288), więc powinniśmy użyć' render (: file = > File.join (Rails.root, 'public/403'),: formats => [: html],: status => 403,: layout => false) '(zwróć uwagę na sposób, w jaki określiłem format). –
... lub nawet "render (: file => Rails.root.join (" public "," 403 "),: formats => [: html],: status => 403,: layout => false) . –