创建API服务.md 3.4 KB

创建user-api服务

需求描述

实现用户注册、登录、获取用户信息功能

一、创建工程

创建一个名称为 book 的 go mod 工程

$ mkdir book && cd book
$ go mod init book

查看book目录

$ tree
.
└── go.mod

0 directories, 1 file

二、创建api文件

创建user/api文件夹

$ mkdir -p user/api && cd user/api

创建user.api文件

$ goctl api -o user.api

输出结果

Done.

NOTE:关于api语法请查看《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)
}

四、生成user api服务

$ 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

api-run-status.png

访问服务

$ curl -i -X POST http://localhost:8888/user/ping

curl-01.png

总结

本节主要演示怎样从创建api文件到启动一个api服务,下一节我们将演示怎么连接访问数据库进行数据交互

参考文档