最近咱们团队开源的后端微服务框架go-zero增加势头比较迅猛,这篇文章我讲讲go-zero对前端团队的做用,并经过一个示例来给你们演示咱们是怎么作的,但愿能给后端的同窗也能够帮助前端同窗提升开发效率👏前端
首先,咱们来看看正常怎么实现api接口:
1,后端给出(或通过协商给出)api定义文档
2,前端多端开发编写各自的api请求代码
3,单元测试,若是有的话
4,先后端都完成后,联调接口java
而后,给你们讲讲咱们团队是怎么作的:
1,后端(或通过协商)经过.api文件定义出接口
2,前端多端开发经过命令一键生成各自的接口实现
因为接口代码是统一辈子成的,因此无需单独作接口联调ios
下面我经过一个例子来给你们展现完整的过程:git
https://github.com/tal-tech/goctl-plugins/releasesgithub
地址:https://raw.githubusercontent.com/tal-tech/go-zero/master/example/bookstore/api/bookstore.apiweb
type ( addReq struct { book string `form:"book"` price int64 `form:"price"` } addResp struct { ok bool `json:"ok"` } ) type ( checkReq struct { book string `form:"book"` } checkResp struct { found bool `json:"found"` price int64 `json:"price"` } ) service bookstore-api { @server( handler: AddHandler ) get /add (addReq) returns (addResp) @server( handler: CheckHandler ) get /check (checkReq) returns (checkResp) }
goctl api ts -api bookstore.api -dir ./bookstore -webapi axios
执行上述代码后会生成以下文件:typescript
import webapi from "axios" export interface AddReq { } export interface AddReqParams { book: string price: number } export interface AddResp { ok: boolean } export interface CheckReq { } export interface CheckReqParams { book: string } export interface CheckResp { found: boolean price: number } /** * @description * @param params */ export function add(params: AddReqParams) { return webapi.get<AddResp>("/add", params) } /** * @description * @param params */ export function check(params: CheckReqParams) { return webapi.get<CheckResp>("/check", params) }
这个工具不单单支持生成ts客户端代码,根据须要能够生成java,dart客户端代码。shell
使用goctl有以下好处:json
go-zero的github地址:https://github.com/tal-tech/go-zeroaxios
但愿这篇文章可以给你带来一些帮助和启发,一颗小星星是你对咱们最大的确定和鼓励🤝
好将来技术