go-zero教程——Food API Gateway

2,455 阅读1分钟

Food API Gateway 创建

我们将从本篇开始编写 Food API Gateway

cdFoodGuides 目录下。创建 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-apiSearch 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》