簡體   English   中英

在不指定'.json in URL'的情況下獲取json響應

[英]Get json response without specifying '.json in URL'

我正在使用Rails + AngularJS應用程序。 為了訪問我的應用程序的json響應,我必須在我的有角$ resource url中訪問/something.json ,而不僅僅是/something

有辦法解決嗎?

路線

upvote_post_comment PUT  /posts/:post_id/comments/:id/upvote(.:format) comments#upvote
      post_comments POST /posts/:post_id/comments(.:format)            comments#create
       post_comment GET  /posts/:post_id/comments/:id(.:format)        comments#show
        upvote_post PUT  /posts/:id/upvote(.:format)                   posts#upvote
              posts GET  /posts(.:format)                              posts#index
                    POST /posts(.:format)                              posts#create
               post GET  /posts/:id(.:format)                          posts#show
                    GET  /                                             home#index

PostsController

class PostsController < ApplicationController
    def index
        @posts = Post.all

        respond_to do |format|
            format.json { render json: @posts }
        end
    end
end

角服務提供商

angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
    return $resource('/posts.json/:id', {id: "@id"})
}]);

嘗試將.json添加到URL的末尾

angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
    return $resource('/posts/' + id + '.json')
}]);

在你的控制你說的respond_do給只有當格式的JSON響應(.:format) in the routes被指定為JSON。

您可以修改控制器PostsController以使用json no- matter-格式響應。

class PostsController < ApplicationController
    def index
        @posts = Post.all
        render json: @posts
    end
end

注意 :在此之后,URL后面的格式將無關緊要(無論是.json,.xml還是什么)。 控制器的動作總是返回json。

在routes.rb中設置默認格式

resources :posts, defaults: { format: :json }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM