你写的api接口代码真是_教你如何帮助前端同学快速生成API接口代码

最近我们团队开源的后端微服务框架go-zero增长势头比较迅猛,这篇文章我讲讲go-zero对前端团队的作用,并通过一个示例来给大家演示我们是怎么做的,希望能给后端的同学也可以帮助前端同学提高开发效率👏

首先,我们来看看正常怎么实现api接口:

1,后端给出(或经过协商给出)api定义文档

2,前端多端开发编写各自的api请求代码

3,单元测试,如果有的话

4,前后端都完成后,联调接口

然后,给大家讲讲我们团队是怎么做的:

1,后端(或经过协商)通过.api文件定义出接口

2,前端多端开发通过命令一键生成各自的接口实现

由于接口代码是统一生成的,所以无需单独做接口联调

下面我通过一个例子来给大家展示完整的过程:

从这里下载goctl可执行文件,并确保命令行可运行goctl命令:

下载官方示例的api文件

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("/add", params)

}

/**

* @description

* @param params

*/

export function check(params: CheckReqParams) {

return webapi.get("/check", params)

}

这个工具不仅仅支持生成ts客户端代码,根据需要可以生成java,dart客户端代码。

使用goctl有如下好处:

减少重复劳动。

降低一些由于前后端沟通问题导致的低级错误。

服务器更新了api,客户端重新生成代码后,编译阶段就能发现问题。

希望这篇文章能够给你带来一些帮助和启发,一颗小星星是你对我们最大的肯定和鼓励🤝

好未来技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值