rails de raisin api erreur lors de l'appel des classes pour version-ed api
-
21-12-2019 - |
Question
Je suis en train d'appeler la version de classes spécifiques pour de version de l'api(rails-raisin) et obtenez l'erreur
NameError (uninitialized constant API::V1::XMLResponses):
09:23:36 web.1 | app/api/v1/base.rb
ma structure de répertoire
app/
api/
v1/
xmlresponses/
phonebook.rb
api.rb
v2/
xmlresponses/
api.rb
api.rb
l'api.rb besoin d'un v1/base.rb' besoin d'un v2/base.rb'
module API
class Base < Grape::API
mount API::V1 => '/'
mount API::V2 => '/v2/'
end
end
dans v1/base.rb-je accéder à des classes pour cette version de l'api
V1::XMLResponses::Annuaire::getall()
S'il vous plaît, pourriez-vous me dire pourquoi j'ai cette erreur?
Merci pour votre réponse, j'ai créé application simple qui montre comment c'est fait https://github.com/Asmmund/grape_versioning
La solution
Il pourrait être tout simplement quelque chose de mal dans votre structure de module.Peut-être un manque require
.
Je voudrais écrire quelque chose comme ceci:
/foo
v1/
|_ responses/
| |_ time.rb
|
|_ base.rb
v2/
|
|_ base.rb
api.rb
config.ru
Les fichiers:
# api.rb`
require 'grape'
require './v1/base.rb'
require './v2/base.rb'
module FooBar
module API
class Base < Grape::API
mount API::V1 => '/'
mount API::V2 => '/v2/'
end
end
end
# v1/base.rb
require_relative './responses/time.rb'
module FooBar
module API
class V1 < Grape::API
get 'foo' do
"foo"
end
get 'time' do
API::Responses::Time.api_time
end
end
end
end
# v1/responses/time.rb
module FooBar
module API
module Responses
class Time
def self.api_time
"API time"
end
end
end
end
end
# v2/base.rb
module FooBar
module API
class V2 < Grape::API
get 'bar' do
"bar"
end
end
end
end
Puis dans config.ru
# config.ru
require './api.rb'
run FooBar::API::Base
Exécuter avec:
thin start
...
curl 0.0.0.0:3000/foo
=> foo
curl 0.0.0.0:3000/v2/bar
=> bar
curl 0.0.0.0:3000/time
=> API time
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow