分享
  1. 首页
  2. 文章

【微服务】如何优雅的写文档(文档自动化swagger)

华哥Dean · · 3346 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1 swagger简介

在微服务的开发模式下,除了底层的socket和rpc通信模式下,其中国际标准REST API是比较流行的方式,它基于http/https协议,加上JSON作为序列化的方式结合,是这几年微服务比较流行的技术标准,同时也是微服务的标配搭配模式。
不同的语言都有很多Web服务API的框架,并结合数据库访问的ORM模式下,组成API的快速开发模式,但是能结合API文档自动化,和设计,构建,测试等标准与一身的,可能就唯独swagger是个不错的选择。
swagger是这样的一个产品(框架),它类似于Google的Protocol buffer(Proto), facebook的thrift,以及grpc等客户端和服务通信的手段,以及服务端进行服务和返回内容的序列化,并且和这些技术框架类似,swagger定义了一套接口文件的规范。主要内容有以下几个方面:
设计:通过一套标准来定义设计和模型化的APIs。
构建:根据API构建生成不同语言的稳定可重用的代码。
文档化:帮助开发者创建api文档,即文档的自动化。
测试:可以快速的对API进行功能测试。
标准化:根据API的框架形成API的风格化。
而这篇文章,将重点进行自动化文档的API访问docs的讲解和实践介绍,讲解将采用golang的swagger框架go-swagger。

2 自动化文档例子

2.1 创建工程并下载goswagger

创建目录goswagger并将GOPATH设置到这个目录,并创建src目录,并与src下面创建autodocs

go get -u github.com/go-swagger/go-swagger

下载安装完成后目录结构如下


注意点:

对于golang.org的目录库的下载,直接找到golang的github目录地址:https://github.com/golang

然后通过git clone下载对应的net和text到本地,并放到GOPATH目录golang.org/x/下

2.2 编译安装swagger

到目录github.com/go-swagger/go-swagger/cmd/swagger下进行go install

编译成功后swagger可执行程序会生成到$GOPATH/bin 下面

2.3 创建api描述yml文件

在autodocs目录下创建api文档描述文件autodocs.yml

---
swagger: "2.0"
info:
 description: 文档自动化swagger例子配置和演示
 title: 自动化文档API例子doc文档说明
 version: 1.0.0
consumes:
- application/autodocs.v1+json
produces:
- application/autodocs.v1+json
schemes:
- http
paths:
 /get_info:
 get:
 summary: '1 获取信息get_info'
 description: '这是一个获取信息数据的例子,调用传参可以获取你想要的信息,出错的时候会有返回'
 operationId: get_info
 consumes:
 - application/json
 produces:
 - application/json
 parameters:
 - name: name
 in: query
 description: 名字 
 required: true
 type: string
 responses:
 '200':
 description: 成功
 schema:
 $ref: '#/definitions/SchemaModel'
 '500':
 description: 服务器内部错误
 schema:
 $ref: '#/definitions/ErrorModel'
definitions:
 SchemaModel:
 type: object
 properties:
 id:
 type: integer
 ErrorModel:
 type: object
 properties:
 message:
 type: string
 code:
 type: integer

2.4 运行api文档服务

验证yml文件定义是否有问题

swagger validate autodoc.yml

运行doc的文档服务

swagger serve --host=0.0.0.0 --port=2399 --no-open autodoc.yml

后台运行结果


网页访问查看API说明

3 为啥要文档自动化

首先,程序员本身考虑出发,程序员都不喜欢写文档,文档自动化其实是让程序员写代码。文档自动化是让系统自动生成文档的界面。
其次,swagger的文档自动化是系统自动生成,可以通过配置代码文件修改从而改变文档页面,便于维护和使用。
所以文档自动化其实是一个高效的,并且是在微服务开发模式下,一个比较好的工程实践。
而对于文档自动化的版本,则可以做到保留每个文档配置yml文件,并通过yml文件的名称来维护这个文档的版本,从而快速做到不同版本文档的想法。保留历史。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:华哥Dean

查看原文:【微服务】如何优雅的写文档(文档自动化swagger)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3346 次点击
上一篇:进制知识
下一篇:有趣的defer
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏