栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

java endpoint原理

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java endpoint原理

# Endpoint

> service的调用层,还可以添加各种中间件,验证,限流,日志。

## 样例

```go

// 定义请求格式

type UserRequest struct {

Uid int `json:"uid"`

Method string

Token string

}

// 定义返回格式

type UserResponse struct {

Result string `json:"result"`

}

func GenUserEndpoint(userService IUserService) endpoint.Endpoint {

return func(ctx context.Context, request interface{}) (response interface{}, err error) {

r := request.(UserRequest)

fmt.Println("当前用户名是:", ctx.Value("LoginUser"))

result := "nothing"

if r.Method == "GET" {

// 添加端口是为了测试负载均衡

result = userService.GetName(r.Uid) + strconv.Itoa(util.ServicePort) // 获取服务端口

} else if r.Method == "DELETE" {

err = userService.DelUser(r.Uid)

if err != nil {

result = err.Error()

} else {

result = "success"

}

}

return UserResponse{Result: result}, nil

}

}

```

## 添加中间件

> 添加日志中间件

```

// 日志中间件

func UserServiceLogMiddleware(logger log.Logger) endpoint.Middleware {

return func(next endpoint.Endpoint) endpoint.Endpoint {

return func(ctx context.Context, request interface{}) (response interface{}, err error) {

r := request.(UserRequest)

logger.Log("method", "GET", "event", "xxx", "userid", r.Uid)

return next(ctx, request)

}

}

}

// mian层调用

UserServiceLogMiddleware(logger)(GenUserEndpoint(user))

```

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/944503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号