最近咱們團隊開源的後端微服務框架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
但願這篇文章可以給你帶來一些幫助和啓發,一顆小星星是你對咱們最大的確定和鼓勵🤝
好將來技術