如何使用grape-swagger将外部API文档添加到Swagger中?

时间:2014-12-26 19:35:34

标签: swagger grape grape-api

如何添加外部API文档?

例如,我正在使用门卫,POST /api/v1/token 这不是葡萄的终点。如何将此端点添加到swagger?

1 个答案:

答案 0 :(得分:2)

我今天面临同样的问题。我正在使用Grape作为我的API,并使用Doorkeeper作为OAuth 2提供程序。 Doorkeeper提供了多个API端点,例如POST /oauth/authorizePOST /oauth/token

我在API中添加了一个虚拟oauth api类,使用descparams描述每个终点。当然,我必须手动列出所有参数(需要或可选,名称,类型,desc,值等)。但我将实施留空了。当用户呼叫这些api时,请求将被路由到Doorkeeper以执行实际操作。

例如,我关于POST /oauth/token端点的代码:

module API
  class Oauth < Grape::API
    resources :oauth do
      # POST /oauth/token
      desc 'Requires for an access token'
      params do
        requires :grant_type,
                 type: String,
                 values: %w(client_credentials authorization_code)
        optional :code,
                 type: String
        requires :client_id,
                 type: String
        requires :client_secret,
                 type: String
        optional :redirect_uri,
                 type: String,
                 default: 'urn:ietf:wg:oauth:2.0:oob'
      end
      post :token do
      end
    end # resources :oauth

    add_swagger_documentation mount_path: 'oauth/swagger_doc',
                              api_version: '',
                              format: :json,
                              hide_format: true,
                              hide_documentation_path: true
  end
end

生成的招摇文件: enter image description here