我google了一下,找到了一个适当且易于实现的方法来为现有的Rails API应用程序生成Swagger文档。简而言之,有两种实现方式:通过控制器,模型或通过Rspec控制器/请求规范。列表不会太长,选择也不容易:
有没有人知道其他宝石为现有的Rails API应用程序生成Swagger文档?欢迎任何建议!谢谢。
我得到的解决方案是使用rswag gem和rspec-rails-swagger gem - 通过在Gemfile中添加以下内容来安装rswag gem:
#Gemfile
gem 'rswag-api'
gem 'rswag-ui'
group :development, :test do
gem 'rspec-rails', '~> 3.8.1'
gem 'rspec-rails-swagger', '~> 0.1.5'
...
end
rails g rswag:install
生成swagger_helper.rb
rails generate rspec:swagger PostsController
(将名称改为你想要编写规范的你想要的控制器)。bundle exec rake swagger
生成一个swagger.json
文件。routes.rb
文件中添加以下行来安装RSwag API和RSwag UI引擎:#../config/routes.rb
Rails.application.routes.draw do
mount Rswag::Ui::Engine => '/api-docs'
mount Rswag::Api::Engine => '/api-docs'
...#other routes come here
end
rails s
启动你的rails服务器localhost:3000/api-docs
以查看生成的Swagger文档。注意:它工作得很好,并回复客户要求,即:
我从rswag-specs
中删除了Gemfile
gem,因为它无法验证我在我的Rails API应用程序中使用的JSON API format gem在active_model_serializers中返回的响应模式。我一直都是这样的:
现在请求规范由RSpec和rspec-rails-swagger同时验证,没有麻烦。
希望这可以帮助。