【问题标题】:Where should my page be located in a Rails API project?我的页面应该位于 Rails API 项目中的什么位置?
【发布时间】:2017-10-21 22:47:11
【问题描述】:

我正在为我用纯 html/js 制作的游戏构建一个仅限 Rails API 的应用程序。为了更好的结构,大型 Rails 项目中的页面应该位于何处(将添加用户等)。上市?应用程序?我应该在根级别创建一个文件夹吗?

【问题讨论】:

  • 经验法则是将api控制器和视图存储在/api中。所以你可以将视图存储在app/views/api/[name_of_controller]/[name_of_view].*
  • 如果它是一个仅 API 的 Rails 应用程序,那么我会将 JavaScript 客户端代码放入一个单独的存储库中,并将客户端部署到另一个位置。

标签: ruby-on-rails ruby ruby-on-rails-5 rails-api


【解决方案1】:

如果您只想提供 API,您可以通过多种方式实现。

仅限 Rails 的 API:Rails API only

由于只有 api 可能对 JWT 身份验证感兴趣:JWT Sample

路线 - 示例!

namespace :api do
    namespace :v1, defaults: { format: :json } do
        resources :orders, only: [:index, :show,:create] do
            member do
                post 'cancel'
                post 'status'
                post 'confirmation'
            end
        end

        # Users
        resources :users, only: [] do
            collection do
                post 'confirm'
                post 'sign_in'
                post 'sign_up'
                post 'email_update'
                put  'update'
            end
        end
    end
end

#output
...
GET  /api/v1/orders(.:format)  api/v1/orders#index {:format=>:json}
POST /api/v1/orders(.:format)                  api/v1/orders#create {:format=>:json}
 GET  /api/v1/orders/:id(.:format)              api/v1/orders#show {:format=>:json}
 POST /api/v1/users/confirm(.:format)           api/v1/users#confirm {:format=>:json}
 POST /api/v1/users/sign_in(.:format)           api/v1/users#sign_in {:format=>:json}     

控制者: - 示例!

#application_controller.rb
class ApplicationController < ActionController::API
end

#api/v1/app_controller.rb
module Api
    class V1::AppController < ApplicationController
       ...    
    end
end

#api/v1/users_controller.rb
module Api
    class V1::UsersController < V1::AppController
      ...
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多