博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用 Grape-Swagger 生成 API 文档
阅读量:6593 次
发布时间:2019-06-24

本文共 2119 字,大约阅读时间需要 7 分钟。

在Rails 项目中使用 Grape 来开发 API, 想尝试一下通过 swagger 来自动生成 API 文档,至于为什么要选 swagger 也没有特别的理由, 在 Ruby China 看过几篇分享。然后开始 Google 官方文档和一些列子,中间也碰到一些坑,此文主要是总结下配置 swagger 的过程。

安装相关的 Gem

在 Gemfile 中添加 grape-swaggergrape-swagger-rails 这两个 gem。

source 'https://rubygems.org'gem 'rails', '4.2.3'gem 'sqlite3'gem 'sass-rails', '~> 5.0'gem 'uglifier', '>= 1.3.0'gem 'coffee-rails', '~> 4.1.0'gem 'jquery-rails'gem 'turbolinks'gem 'jbuilder', '~> 2.0'gem 'grape'gem 'grape-swagger', '~> 0.10.2'gem 'grape-swagger-rails', '~> 0.1.0'group :development, :test do  gem 'byebug'  gem 'web-console', '~> 2.0'  gem 'spring'end

这里有两点说明:

  1. grape-swagger 指定了版本号,0.10.2 是当前最新版本, 因为老的版本 0.10.1 会存在 hide_format 参数无法正常工作的问题,这个问题在最新版本中修复了。

  2. grape-swagger-rails 是 Swagger UI 的 Rails Engine , 也是必备的组件。

配置 swagger

看 grape-swagger 的官方文档的用法介绍,主要是添加两行代码 require-swaggeradd_swagger_documentation.

  • require-swagger 当然就是 引入 grape-swagger 这个 gem 了

  • add_swagger_documentation 是在这里开始生成文档的 method

假设,当前我的 API 的 目录结果是这样的:

.├── application_api.rb└── v1    ├── base_api.rb    └── post_api.rb

application.rb:

require "grape-swagger"class ApplicationAPI < Grape::API  content_type :json, 'application/json;charset=UTF-8'  format :json    mount V1::Baseend

base.rb:

module V1  class Base < Grape::API    version 'v1', using: :path    mount V1::PostApi    add_swagger_documentation(      :api_version => "api/v1",      hide_documentation_path: true,      hide_format: true    )  endend

application_api.rb 是最底层的,里面放最通用的配置,所以在这里 require 'grape-swagger',这样不用每次都 require 了. 当前 API 的版本是 V1, v1\base.rb 会 mount 所有的 API, 所以我们在 v1/base_api.rb 中添加 add_swagger_documentation

三个常用的参数:

  • api_version: 需要设置正确,如果设置错误会无法正确生成文档

  • hide_cocumentation_path: 隐藏文档路径

  • hide_format: 这个是去除 URL 后面的格式后缀: (.json), 这样便于我们在网页面直接测试 API

配置 Swagger UI

接下来目标要使 grape-swagger-rails 正常工作。

  • config/initializers 目录下添加 swagger-rails.rb 文件

GrapeSwaggerRails.options.url      = "/api/v1/swagger_doc"GrapeSwaggerRails.options.app_url  = '/'
  • config/routes.rb 文件中指明 apidoc 的路径

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

现在就可以通过 :3000/apidoc 访问 API 文档了

转载地址:http://srcio.baihongyu.com/

你可能感兴趣的文章
阐述Spring框架中Bean的生命周期?
查看>>
虚拟内存管理
查看>>
注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”
查看>>
大数据小视角1:从行存储到RCFile
查看>>
第18天:京东网页头部制作
查看>>
好消息:Dubbo & Spring Boot要来了
查看>>
面向对象封装的web服务器
查看>>
南开大学提出新物体分割评价指标,相比经典指标错误率降低 69.23%
查看>>
初创公司MindMaze研发情绪反应VR,让VR关怀你的喜怒哀乐
查看>>
绕开“陷阱“,阿里专家带你深入理解C++对象模型的特殊之处
查看>>
ElasticSearch
查看>>
9-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,C#TCP客户端发信息给单片机控制小灯的亮灭)...
查看>>
香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
查看>>
不规则物体形状匹配综述
查看>>
自动化设计-框架介绍 TestCase
查看>>
CJ看showgirl已经out!VR体验才是王道
查看>>
Manually Summarizing EIGRP Routes
查看>>
spring boot 1.5.4 整合webService(十五)
查看>>
modsecurity(尚不完善)
查看>>
获取.propertys文件获取文件内容
查看>>