实现用户注册、登录、获取用户信息功能
创建一个名称为 book
的 go mod
工程
$ mkdir book && cd book
$ go mod init book
查看book目录
$ tree
.
└── go.mod
0 directories, 1 file
创建user/api文件夹
$ mkdir -p user/api && cd user/api
创建user.api文件
$ goctl api -o user.api
输出结果
Done.
NOTE:关于api语法请查看《api语法》
我们用goland打开book工程,修改user.api文件内容为
info(
title: "user api"
desc: "用户系统"
author: "anqiansong"
email: "anqiansong@xiaoheiban.cn"
)
type RegisterReq {
Username string `json:"username"`
Mobile string `json:"mobile"`
Password string `json:"password"`
}
type LoginReq {
Username string `json:"username"`
Password string `json:"password"`
}
type UserReply {
Id int64 `json:"id"`
Username string `json:"username"`
Mobile string `json:"mobile"`
Nickname string `json:"nickname"`
Gender string `json:"gender"`
JwtToken
}
type JwtToken {
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)
}
$ goctl api go -api user.api -dir .
查看一下 api
目录
$ 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服务,下一节我们将演示怎么连接访问数据库进行数据交互