
前言
本文将介绍在 go-zero 框架下如何实现一个能够随机生成随机数字验证码的 API 接口。
1. 编写 API 接口
在 go-zero 框架下要实现一个接口,需要先定义一个 api 文件,在这个文件中声明我们要实现接口的函数名、参数和返回值。如果参数和返回值是自定义类型的,还需要将具体的类型定义写在 api 文件中。生成随机图形验证码的函数、参数和返回值声明在 fac-contact.api 中,所有的接口 api 都聚合在一个总的 api 文件,即 fca.api。后续只需根据这一个 fca.api 就可以自主生成所有接口后续的 handle 和 logic 文件。
1.1 fac-contact.api
@server ( prefix: /api/v1 timeout: 15s group: contact ) service fca-api {
@doc( summary: "获取图形验证码" description: "生成并返回图形验证码" )
@handler WebsiteCaptchaHandler
get /contact/captcha returns(ContactCaptchaResp)
}
1.2 fca.api
import "fca-contact.api"
type ContactCaptchaResp {
Data ContactCaptchaRespData `json:"data,omitempty"`
}
type ContactCaptchaRespData {
CaptchaId string `json:"captchaId"` //与验证码对应的 ID
ImageBase64 string `json:"imageBase64"` //生成的图形验证码
}
这里的 CaptchaId 是为了后续将用户输入的图形验证码与 ID 对应的图形验证码进行比对,如果相等即说明用户输入正确,相反则说明错误。
在写完 api 文件后,执行下述代码,go-zero 框架就可以自主帮我们生成后面的 Handle 函数和 Logic 函数。
goctl api go -api ./fca.api -dir .
注:goctl(Go Control Tool)是 go-zero 框架的代码生成工具,用于自动化生成项目代码、配置文件及部署脚本,主要功能包括:
- 项目脚手架生成:快速创建 API 服务、RPC 服务等基础代码结构。


