Rails - Errore API dell'uva Classi di chiamata per API della versione-Ed
-
21-12-2019 - |
Domanda
Sto cercando di chiamare le classi specifiche della versione per API con versione (rotaia-uva) e ottenere errori
NameError (uninitialized constant API::V1::XMLResponses):
09:23:36 web.1 | app/api/v1/base.rb
.
La mia struttura di directory
app/
api/
v1/
xmlresponses/
phonebook.rb
api.rb
v2/
xmlresponses/
api.rb
api.rb
.
API.RB richiedere 'v1 / base.rb' Richiedere 'v2 / base.rb'
module API
class Base < Grape::API
mount API::V1 => '/'
mount API::V2 => '/v2/'
end
end
.
in V1 / Base.rb I lezioni di accesso per questa versione di API
.v1 :: xmlresponses :: rubrica :: getall ()
Per favore, potresti dirmi perché ottengo questo errore?
Grazie per la tua risposta, ho creato un'app semplice che dimostra come è fatto
Soluzione
Potrebbe essere semplicemente qualcosa di sbagliato nella struttura del modulo.
Forse un require
mancante.
Scrivo qualcosa del genere:
/foo
v1/
|_ responses/
| |_ time.rb
|
|_ base.rb
v2/
|
|_ base.rb
api.rb
config.ru
.
I file:
# 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
.
poi in config.ru
# config.ru
require './api.rb'
run FooBar::API::Base
.
Run con:
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
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow