Swagger 是什麼呢?

是開源領域比較流行的 API 開發工具和規範,算是 OpenAPI 規範的領航者

可以參考 Swagger 官網

Grape with Swagger

使用 grape 開發 API 的另一個好處是可以自動生成 swagger 的API文件

所以只要 API 寫好了,API 文件就寫好了。

除此之外,還可以整合 swagger-ui 直接將 API 文件掛載在 rails 的 routes 下

Gemfile 內加入兩隻 gem

  gem 'grape-swagger'
  gem 'grape-swagger-rails'

在 API V0 最上層上編輯 app/api/api_v0/base.rb 來加入 swagger documention 的設定

module ApiV0
  class Base < Grape::API
  # ...

  add_swagger_documentation(
    mount_path: 'swagger_doc',
    hide_format: true,
    hide_documentation_path: true
  )

  #...
  end
end

建立 grape swagger 的 initialize

touch config/initializers/grape_swagger_rails.rb

設定 swagger document 的路徑

GrapeSwaggerRails.options.url = "swagger_doc"
GrapeSwaggerRails.options.app_name = 'My App'
GrapeSwaggerRails.options.app_url = '/api/v0/'

實際運作原理很簡單,只是讓 grape 吐出 API 相關的 JSON,然後讓 swagger 這套 JS 做的 UI 去接來顯示而已

你可以查看 http://localhost:3000/api/v0/swagger_doc 來看到完整的 JSON

這裡把 app_url 設定為 /api/v0/,如果將來有多版本的問題,可能就不適合使用 grape-swagger-rails,更好的做法可能是自己套 swagger UI,依照不同版本作管理來顯示。

編輯 config/routes.rb 加入 swagger document 的路由

Rails.application.routes.draw do
  # ...
  mount GrapeSwaggerRails::Engine => '/apidoc'
  # ...
end

重新啟動 rails server,在網址列輸入 localhost:3000/apidoc 就可以看到由 swagger-ui 生成的 API 文件了。

PNG

Copyright © NicLin 2019 all right reserved,powered by Gitbook該頁面生成時間: 2019-04-09 10:00:37

results matching ""

    No results matching ""