尝试使用门卫创建API。当我登录我的帐户并且会话用户经过身份验证并访问我的API
http://localhost:3000/api/v1/trials
我得到一个路由错误页面,上面写着“未初始化的常量TrialsController”和一个rake路由列表。包括:
trials_path GET /api/v1/trials(.:format) trials#index
我正在使用rails版本4.0.3,ruby 2.0.0。这是我的config / routes.rb文件:
MyApp::Application.routes.draw do
devise_for :users
use_doorkeeper :scope => 'oauth2' do
end
root :to => 'welcome#index'
scope 'api' do
scope 'v1' do
resources :trials
end
end
end
我的app / dir包含:
app/
controllers/
application_controller.rb
welcome_controller.rb
api/
v1/
trials_controller.rb
我的tests_controller.rb是:
module Api::V1
class TrialsController < ::ApplicationController
doorkeeper_for :all
def index
@trials = Trials.all
end
def show
...
end
...
end
end
更新: 当我将routes.rb更改为命名空间时,跟踪控制器如下:
namespace :api do
namespace :v1 do
resources :trails
end
end
尝试访问时出现“无路由匹配”错误:
http://localhost:3000/api/v1/trials(.json)
(有或没有扩展名。)
我还加入了试验#index:
def index
@trials = Trials.all
respond_to do |format|
format.json { render :json => @trials }
format.xml { render :xml => @trials }
end
end
也没有运气。
答案 0 :(得分:1)
我不确定它会如何对抗门卫,但我在应用程序中有类似的API结构。我的路线中有以下内容(与塞尔吉奥所说的相符)
namespace :api, defaults: {format: 'json'} do
namespace :v1 do
resources :api_controller_1
resources :api_controller_2
end
end
以下是我构建API类的方法:
module Api
module V1
class ApiNamedController < ApplicationController
# code
end
end
end