Я немного смущен: я пишу централизованный контроллер в соответствии с этим question, и я немного запутался в методах respond_to
.Как использовать response_to для json?
В API::Controller
я бы что-то вроде этого:
def index
@post = Post.all
render json: @posts
end
А на JS (AngularJS) сторону вещей, я бы что-то вроде этого:
$http.defaults.headers.common.Authorization = 'Token token='+ $scope.user.auth_token;
$http.get('/api/posts').success(function (data) {
$scope.posts = data;
});
Это работает отлично на контроллере API, однако я хочу использовать общий контроллер:
def index
@post = Post.all
respond_to do |format|
format.html { render layout: 'admin' }
format.json { render json: @invoices }
end
end
Но когда I tr y, чтобы выполнить вызов ajax, кажется, что API отвечает html
, а не json
.
Что мне не хватает?
Я скоро приму ответ (кажется, мне нужно подождать 5 минут). Вопрос, хотя, есть способ, которым я могу принять json без '.json' в конце URL-адреса? Это не похоже на требование в большинстве API-интерфейсов. – WagnerMatosUK
Я использую AngularJS. Я также использую расширение Chrome под названием Postman для тестирования API, и оно работает только в том случае, если я добавлю к нему '.json'. Думаю, мне нужно установить 'json' в заголовок. Спасибо – WagnerMatosUK
Я обновил свой вопрос. Что касается вас, вы сказали: «Это не похоже на требование в большинстве API-интерфейсов». Наилучшим образом, большинств APIs отвечают с JSON per se. И в случае, если они предоставляют несколько ответов, тогда вы несете ответственность за отправку правильного параметра для возврата данных в JSON. –