需求描述
实现用户注册、登录、获取用户信息功能
一、创建工程
创建一个名称为book的go mod工程
$ cd ~ $ mkdir book && cd book $ go mod init book
查看book目录
$ ls
在book目录下会多出一个go.mod文件
go.mod
二、创建api文件
创建user/api文件夹
$ mkdir -p user/api && cd user/api
创建user.api文件
$ goctl api -o user.api
输出结果
Done.
三、定义api服务
我们用goland打开book工程,修改user.api文件内容为
info( title: "user api" desc: "用户系统" author: "anqiansong" email: "anqiansong@xiaoheiban.cn" ) type RegisterReq struct { Username string `json:"username"` Mobile string `json:"mobile"` Password string `json:"password"` } type LoginReq struct{ Username string `json:"username"` Password string `json:"password"` } type UserReply struct { Id int64 `json:"id"` Username string `json:"username"` Mobile string `json:"mobile"` Nickname string `json:"nickname"` Gender string `json:"gender"` JwtToken } type JwtToken struct { AccessToken string `json:"accessToken,omitempty"` AccessExpire int64 `json:"accessExpire,omitempty"` RefreshAfter int64 `json:"refreshAfter,omitempty"` } service user-api { @handler ping post /user/ping () @handler register post /user/register (RegisterReq) @handler login post /user/login (LoginReq) returns (UserReply) }
四、生成user api服务
$ goctl api go -api user.api -dir .
查看一下user服务tree
. ├── etc │ └── user-api.yaml ├── internal │ ├── config │ │ └── config.go │ ├── handler │ │ ├── loginhandler.go │ │ ├── pinghandler.go │ │ ├── registerhandler.go │ │ └── routes.go │ ├── logic │ │ ├── loginlogic.go │ │ ├── pinglogic.go │ │ └── registerlogic.go │ ├── svc │ │ └── servicecontext.go │ └── types │ └── types.go ├── user.api └── user.go
五、启动服务
启动一个服务,侦听8888端口
$ go run user.go -f etc/user-api.yaml
访问服务
$ curl -i -X POST http://localhost:8888/user/ping
总结
本节主要演示怎样从创建api文件到启动一个api服务,下一节我们将演示怎么连接访问数据库进行数据交互