go-zero教程——Food rpc - DeleteFood

954 阅读1分钟

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 rpcdeletefood 方法

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 就开发完成了。

上一篇《go-zero教程——Food rpc - AddFood》