生成CRUD的api接口代码工具都比较成熟了,CRUD代码都是标准化固定化的,对于任意自定义的api接口代码,应该不少开发者还是手工编写,这些不是标准化接口代码,应该如何生成呢?
这里的解决方案是使用protobuf协议来描述api接口,通过自定义插件 [protoc-gen-go-gin](https://github.com/zhufuyi/sponge/tree/main/cmd/protoc-gen-go-gin) 生成web服务的任意api接口代码。
### 依赖工具
- 准备proto文件 [user.proto](https://github.com/zhufuyi/sponge_examples/blob/main/3_web-gin-protobuf/api/user/v1/user.proto)。
- 安装工具 [sponge](https://github.com/zhufuyi/sponge/blob/main/assets/install-cn.md)。
安装完工具sponge后,执行命令打开UI界面:
```bash
sponge run
```
<br>
### 快速创建web项目
进入sponge的UI界面,点击左边菜单栏【Protobuf】-->【创建web项目】,填写一些参数生成web服务项目代码 。
![web-http-pb.png](https://static.golangjob.cn/231108/f0116ae2efd0470bcf92296a617b5689.png)
web框架使用 [gin](https://github.com/gin-gonic/gin),还包含了swagger文档、常用的服务治理功能代码,构建部署脚本等,使用什么数据库由使用者选择。
切换到web目录,执行命令:
```bash
# 生成代码
make proto
# 打开internal/handler/user.go代码文件,根据生成的模板代码填写具体逻辑代码。
# 编译和启动服务
make run
```
在浏览器打开 [http://localhost:8080/apis/swagger/index.html](http://localhost:8080/apis/swagger/index.html) 就可以测试api接口了。
![web-http-pb-swagger.png](https://static.golangjob.cn/231108/c5f0ec790a515553dad4dec30109693c.png)
<br>
**这是根据上面步骤生成的通用web服务代码** [https://github.com/zhufuyi/sponge_examples/tree/main/3_web-gin-protobuf](https://github.com/zhufuyi/sponge_examples/tree/main/3_web-gin-protobuf)
**在生成的通用web服务代码上可以`自动添加CRUD api接口`、`人工添加自定义api接口`,请查看详细的开发通用web服务文档** [https://go-sponge.com/zh-cn/web-development-protobuf](https://go-sponge.com/zh-cn/web-development-protobuf)
<br>
<br>
有疑问加站长微信联系(非本文作者))