Food API Gateway 创建
我们将从本篇开始编写 Food API Gateway
cd 到 FoodGuides 目录下。创建 api 文件夹
mkdir -p foodmanage/api && cd foodmanage/api
创建food.api文件
goctl api -o food.api
定义 api 服务
info(
title: // FoodApi
desc: // 食材管理服务相关API
)
type SearchRequest struct {
key string `json:"key"`
}
type SearchResponse struct {
FoodReply
}
type AddFoodRequest struct {
FoodId string `json:"foodId"`
}
type DeleteFoodRequest struct {
FoodId string `json:"foodId"`
}
type FoodReply {
Id string `json:"id"`
Name string `json:"name"`
Protein string `json:"protein"`
Fat string `json:"fat"`
Carbohydrate string `json:"carbohydrate"`
Calorie string `json:"calorie"`
Minerals string `json:"minerals"`
Calcium string `json:"calcium"`
Phosphorus string `json:"phosphorus"`
Iron string `json:"iron"`
Purine string `json:"purine"`
}
type FoodResponse struct {
}
service food-api {
@handler Search // 食材搜索
post /food/search(SearchRequest) returns(SearchResponse)
}
@server(
jwt: Auth
)
service food-api {
@handler AddFood // 新增食材
post /food/addfood(AddFoodRequest) returns(FoodResponse)
@handler DeleteFood // 删除食材
post /food/deletefood(DeleteFoodRequest) returns(FoodResponse)
@handler FoodList // 我的食材
post /food/foodlist() returns(FoodResponse)
}
我们定义了四个 food-api :Search AddFood DeleteFood FoodList
其中 Search AddFood DeleteFood FoodList 请求需要鉴权处理
生成 food-api 服务
goctl api go -api food.api -dir .
查看一下 api 目录
➜ api git:(master) ✗ tree
.
├── etc
│ └── food-api.yaml
├── food.api
├── food.go
└── internal
├── config
│ └── config.go
├── handler
│ ├── addfoodhandler.go
│ ├── deletefoodhandler.go
│ ├── foodlisthandler.go
│ ├── routes.go
│ └── searchhandler.go
├── logic
│ ├── addfoodlogic.go
│ ├── deletefoodlogic.go
│ ├── foodlistlogic.go
│ └── searchlogic.go
├── svc
│ └── servicecontext.go
└── types
└── types.go
7 directories, 15 files
➜ api git:(master) ✗
API Gateway 增加 Jwt 鉴权
编辑 api/etc 下的 food-api.yaml 文件,新增如下
Auth:
AccessSecret: ad879037-d3fd-tghj-112d-6bfc35d54b7d
AccessExpire: 86400
启动服务
启动服务,注意 在启动服务前,需要确保 先前文章用到的 ningxi-compose 正常运行起来。
go run food.go -f etc/food-api.yaml
这样 Food API Gateway 就初步完成了。
上一篇《go-zero教程——用户管理rpc - Userinfo》 下一篇《go-zero教程——Food rpc - Search》