У меня есть приложение "программное обеспечение как услуга", которое использует JSON, переданный через API RESTful.
Проще говоря: каковы наилучшие методы для сбора и отчетности исключений при использовании 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 = > : unprocessable_entity или что-то в этом роде.
Но тогда, если клиентское приложение отправляет недопустимый путь, например:
http://www.myhost.com/badtypo/1.json
Является ли приложение на основе JSON предполагаемым для этого и возвращает ошибку в JSON? Если да, то где я могу его захватить, не углубляясь в ActionDispatch?
Итак, в общем, я punt и позволяю ActionController генерировать HTML, если есть ошибка? Это не кажется правильным...