У меня есть приложение «программное обеспечение как услуга», которое использует JSON, передаваемое через RESTful API.
Проще говоря :, каковы наилучшие методы для захвата и сообщения об исключениях при использовании RESTful API с обменом данными JSON?
Моей первой мыслью было посмотреть, что делает Rails, создавая каркас, но это явно неправильно. Вот отрывок:
class MumblesController < ApplicationController
# GET /mumbles/1
# GET /mumbles/1.json
def show
@mumble = Mumble.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @mumble }
end
end
end
В этом случае, если код JSON отправляет несуществующий идентификатор -, например.
http://www.myhost.com/mumbles/99999.json
то Mumble.find ()поднимет ActiveRecord ::RecordNotFound. ActionController поймает это и отобразит страницу ошибки в HTML. Но HTML бесполезен для клиента, ожидающего JSON.
Я мог бы обойти это, обернув Mumble.find ()в блок begin... rescue RuntimeError
и визуализировав объект JSON status => :unprocessable _или что-то в этом роде.
Но что тогда, если клиентское приложение отправляет неверный путь, например.:
http://www.myhost.com/badtypo/1.json
Должно ли приложение на основе JSON улавливать это и возвращать ошибку в JSON? Если да, то где мне это зафиксировать, не углубляясь в ActionDispatch?
Итак, в целом, могу ли я разрешить ActionController генерировать HTML в случае ошибки? Это неправильно...