最近咱们团队开源的后端微服务框架go-zero增长势头比拟迅猛,这篇文章我讲讲go-zero对前端团队的作用,并通过一个示例来给大家演示咱们是怎么做的,心愿能给后端的同学也能够帮忙前端同学进步开发效率????
首先,咱们来看看失常怎么实现api接口:
1,后端给出(或通过协商给出)api定义文档
2,前端多端开发编写各自的api申请代码
3,单元测试,如果有的话
4,前后端都实现后,联调接口
而后,给大家讲讲咱们团队是怎么做的:
1,后端(或通过协商)通过.api文件定义出接口
2,前端多端开发通过命令一键生成各自的接口实现
因为接口代码是对立生成的,所以无需独自做接口联调
上面我通过一个例子来给大家展现残缺的过程:
从这里下载goctl可执行文件,并确保命令行可运行goctl命令:
https://github.com/tal-tech/goctl-plugins/releases
下载官网示例的api文件
地址:https://raw.githubusercontent…
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
执行上述代码后会生成如下文件:
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客户端代码。
应用goctl有如下益处:
- 缩小重复劳动。
- 升高一些因为前后端沟通问题导致的低级谬误。
- 服务器更新了api,客户端从新生成代码后,编译阶段就能发现问题。
go-zero的github地址:https://github.com/tal-tech/g…
心愿这篇文章可能给你带来一些帮忙和启发,一颗小星星是你对咱们最大的必定和激励????
好将来技术