API Gateway
代码调用 food rpc
服务
编辑 api/internal/handler
下的 deletefoodhandler.go
文件,新增如下代码
func DeleteFoodHandler(ctx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.DeleteFoodRequest
if err := httpx.Parse(r, &req); err != nil {
httpx.OkJson(w, ningxi.FailureResponse(nil,err.Error(),1000))
return
}
l := logic.NewDeleteFoodLogic(r.Context(), ctx)
resp, err := l.DeleteFood(req)
if err != nil {
httpx.OkJson(w, ningxi.FailureResponse(nil,err.Error(),1000))
} else {
httpx.OkJson(w, ningxi.SuccessResponse(resp,"删除成功"))
}
}
}
编辑 api/internal/logic
下的 deletefoodlogic.go
文件,新增 调用 food rpc
的 deletefood
方法
func (l *DeleteFoodLogic) DeleteFood(req types.DeleteFoodRequest) (*types.FoodResponse, error) {
// todo: add your logic here and delete this line
_,err := l.svcCtx.Food.DeleteFood(l.ctx,&food.DeleteFoodRequest{
Id: req.FoodId,
})
if err != nil{
return &types.FoodResponse{}, nil
} else {
return nil, err
}}
rpc
代码调用 crud+cache
代码
编辑 rpc/food/internal/logic
下的 deletefoodlogic.go
文件, 新增如下代码
func (l *DeleteFoodLogic) DeleteFood(in *food.DeleteFoodRequest) (*food.StatusResponse, error) {
newid,_ := strconv.ParseInt(in.Id,10,64)
err := l.svcCtx.UserFoodModel.Delete(newid)
if err != nil {
return nil,err
}
return &food.StatusResponse{
Success: 1,
}, nil
}
启动服务
启动服务,注意 在启动服务前,需要确保 上一篇文章用到的 ningxi-compose
正常运行起来。
启动 food rpc
服务, 运行成功后,food rpc
则运行在本机的 8089
端口
➜ FoodGuides git:(master) ✗ go run foodmanage/rpc/food/food.go -f foodmanage/rpc/food/etc/food.yaml
Starting rpc server at 127.0.0.1:8089...
启动 food api
服务, 运行成功后,food api
则运行在本机的 8889
端口
➜ FoodGuides git:(master) ✗
Starting server at 0.0.0.0:8889...
api
测试 得到如下数据则说明 服务运行正常
➜ FoodGuides git:(master) ✗ curl --location --request POST 'http://localhost:8889/food/deletefood' \
--header 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTIxMDUxNzEsImlhdCI6MTYxMjAxODc3MSwidXNlcklkIjoxfQ.M9LIoe-bfqE9mQ32ZdBaNJVYPv_Y2xNewxrbl3abA_0' \
--header 'x-user-id: 1' \
--header 'User-Agent: apifox/1.0.0 (https://www.apifox.cn)' \
--header 'Content-Type: application/json' \
--data-raw '{
"foodId": "1"
}'
{"code":1,"message":"删除成功","result":null}%
➜ FoodGuides git:(master) ✗
这样 Food rpc - DeleteFood 就开发完成了。