我正在使用 Grape 在 Rails 中创建 API。这个项目仍然很新鲜,但到目前为止我的路线已经遇到了障碍。
我添加了一个测试端点来查看我的版本是否可以一起工作,并且它们是
我的config/routes.rb
文件
Rails.application.routes.draw do
mount Root => '/'
end
我的app/api/root.rb
文件
require "grape"
class Root < Grape::API
format :json
mount Test::API
end
我的app/api/test/api.rb
文件
require "grape"
module Test
class API < Grape::API
get :world do
{
"response"=>"hello world!",
"name"=>"it is i"
}
end
end
end
和我的api/test/api_spec.rb
文件
require 'rails_helper'
describe 'Endpoints' do
context 'when the endpoint "world" is hit' do
context 'the response' do
let(:res) { JSON.parse(response.body)['response'] }
it 'returns hello world' do
get '/world'
expect(res).to eq 'hello world!'
end
end
end
end
所有这些都运行得很好,所以我尝试在我的app/api/root.rb
文件中添加另一个安装
require "grape"
class Root < Grape::API
format :json
mount Test::API
mount Endpoints::TodoAPI
end
和我的app/api/endpoints/todoapi.rb
文件
require "grape"
module Endpoints
class TodoAPI < Grape::API
end
end
当我尝试运行我的api/test/api_spec.rb
文件时,突然开始出现错误
Failure/Error: mount Endpoints::TodoAPI
NameError:
uninitialized constant Endpoints::TodoAPI
mount Endpoints::TodoAPI
^^^^^^^^^
Did you mean? Endpoints::Todoapi
我试图使TodoAPI
外观与文件完全相同api
,并注释掉api
的 mount 但我不断收到相同的错误。
您的类名错误,
class TodoAPI
文件名 todoapi.rb 应该是因此
ruby中的类名遵循严格的命名约定,遵循蛇形文件命名与驼峰式类名匹配的原则,文件名中单词之间用下划线分隔,然后类名中相应的单词以大写字母开头
例如,包含类定义的文件
Class ToDoApi
将存在于名为的文件中to_do_api.rb