API 용으로 grape
을 사용하는 Rails 앱을 만들고 있습니다. 현재 루트 폴더에 마운트 된 단일 버전의 API가 있습니다 (v1
이 아님). v2
을 생성해야합니다.버전없는 포도 API 버전 번호
/app/api/api.rb
:
module API
class Base < Grape::API
logger Rails.logger
mount API::Things => '/things'
end
를하고 내가 좋아하는 뭔가 /app/api/api/things.rb
을 다음과 같이 현재 버전은 장착
module API
class Things < Grape::API
get '/' do
end
end
end
기본적으로, API는 하드 코드 된 경로 /api/things
에 장착된다. 다음과 같이해야합니다 :
- 경로를 변경하지 않고이 API를
v1
으로 만듭니다. v2
경로를 만듭니다.
그래서, 난 할 api.rb
을 변경 :
module API
class Base < Grape::API
mount API::V1::Base
mount API::V2::Base
end
end
다음과 같이 api/api/v1/base.rb
을 만들어 : 다음
module API
module V1
class Base < Grape::API
version 'v1', using: :accept_version_header
mount API::Things => '/things'
end
end
end
과 같은 v2
을 위해 :
module API
module V2
class Base < Grape::API
version 'v2'
mount API::V2::Things => '/things'
end
end
end
내 문제를 그게입니다.은 예상대로 경로 구성 요소를 /v2
상속하지 않습니다. 따라서 v1
은 /things
에 탑재되어 있으므로 v2
은 거기에 탑재되지 않습니다. v1
그대로
내가 v2
를 작성하는 경우
resources
대신 경로를 사용하고, 작동,하지만 난
v1
와
v2
이 일치하도록 그대로 마운트를 유지하고 싶습니다.
여기에 맞춤법이 틀립니다 (방금 고정했습니다). 실제 코드는 괜찮습니다. – pgb
충분합니다. API 생략 : 시도 했습니까? –
예. 같은 문제. 'v2'는'/ v2/things' 대신에'/ things/v2' 경로를 만드는 것 같습니다. – pgb