APICloud可以自动生成RESTful API吗?
发布网友
发布时间:2022-05-01 01:24
我来回答
共1个回答
热心网友
时间:2022-06-23 18:22
作为一名开发者,可能经常遇到这种问题,项目进度太紧,当你在编写一个Rest 服务时只能将时间都放在编码上,文档基本靠口口相传。
作为一个团队管理者,API文档优先非常重要,比如你需要去审批API的设计合理性,随时查看现存的接口文档,并且参与设计新的API。
多个团队间有大量的微服务,每个微服务对外暴露rest API 都需要文档,没有一个统一的管理系统查看这些服务的API描述文档。这让沟通效率变得低下。
如果一开始就把大量时间放在这种文档编写上,显然效率是低下的。如果你使用的是gRPC,那么管理API会方便些,但是依然缺少一个中心的管理处能够随时看到不同服务的API。
使用Service Center作为注册中心
使用Service Center除了可以管理异构的注册中心,他还拥有管理服务API文档的能力,支持通过API自己上传。
而使用go chassis开发微服务,用户则无需关心这个过程,你只需要编写rest服务,go chassis会在启动时自动生成API文档并上传到服务中心,这样登录到系统的人就可以看到每个服务的API文档,一目了然。
如何生成API文档
文档是在编写完API接口并运行服务后自动生成的
可参考此文档安装go chassis
https://go-chassis.readthedocs.io/en/latest/getstarted/install.html
我们现在使用go chassis,开编写一个服务,完整例子。
首先编写API,定义好API已经对应的方法
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函数中启动服务