做为一名开发者,可能常常遇到这种问题,项目进度太紧,当你在编写一个Rest 服务时只能将时间都放在编码上,文档基本靠口口相传。html
做为一个团队管理者,API文档优先很是重要,好比你须要去审批API的设计合理性,随时查看现存的接口文档,而且参与设计新的API。git
多个团队间有大量的微服务,每一个微服务对外暴露rest API 都须要文档,没有一个统一的管理系统查看这些服务的API描述文档。让沟通效率变得低下github
若是一开始就把大量时间放在这种文档编写上,显然效率是低下的。若是你使用的是gRPC,那么管理API会方便些,可是依然缺乏一个中心的管理处可以随时看到不一样服务的API。bash
使用service center除了能够管理异构的注册中心,他还拥有管理服务API文档的能力,支持经过API本身上传,而使用go chassis开发微服务,用户则无需关心这个过程,你只须要编写rest服务,go chassis将在每次启动时自动生成API文档并上传到服务中心,这样登陆到系统的人就能够看到每一个服务的API文档,一目了然。restful
文档是在编写完API接口并运行服务后自动生成的ide
1. 参考此文旦安装go chassis函数
https://go-chassis.readthedocs.io/en/latest/getstarted/install.html
微服务
2. 咱们如今使用go chassis,开编写一个服务,完整例子。post
首先编写API,定义好API已经对应的方法ui
type RestFulHello struct {}
func (r *RestFulHello) Sayhello(b *restful.Context) {
b.Write([]byte("get user id: " + b.ReadPathParameter("userid")))
}func (s *RestFulHello) URLPatterns() []restful.Route {
return []restful.RouteSpec{
{http.MethodGet, "/sayhello/{userid}", "Sayhello"},
}
}
复制代码
将此结构体注册到go chassis
chassis.RegisterSchema("rest", &RestFulHello{})复制代码
编写最基本的配置信息,包括监听端口和service center地址
cse:
service:
registry:
address: http://127.0.0.1:30100
protocols: # what kind of server you want to launch
rest: #launch a http server
listenAddress: 127.0.0.1:5001复制代码
为服务取名字
service_description:
name: RESTServer # name your provider复制代码
最后在main函数中启动服务
func main() {
//start all server you register in server/schemas.
if err := chassis.Init(); err != nil {
lager.Logger.Error("Init failed.", err)
return
}
chassis.Run()
}复制代码
最后
go build main.go
./main
文档会生成在运行目录下的 conf/RESTServer/schema/RESTServer.yaml
将内容复制到http://editor.swagger.io/,就能够看到文档了
能够在service center UI中下载该文档
访问127.0.0.1:30103,点击services,并点击对应的微服务
最后点击schema tab就能够下载API文档说明
打开下载的文档,就能看到这个服务的API描述了
有了这种透明的文档生成机制,go chassis增强了开发的效率,并加强了文档管理。
项目地址:
https://github.com/go-chassis/go-chassis