java endpoint原理_Endpoint
# Endpoint
> service的調(diào)用層,還可以添加各種中間件,驗(yàn)證,限流,日志。
## 樣例
```go
// 定義請(qǐng)求格式
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("當(dāng)前用戶名是:", ctx.Value("LoginUser"))
result := "nothing"
if r.Method == "GET" {
// 添加端口是為了測試負(fù)載均衡
result = userService.GetName(r.Uid) + strconv.Itoa(util.ServicePort) // 獲取服務(wù)端口
} 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層調(diào)用
UserServiceLogMiddleware(logger)(GenUserEndpoint(user))
```
總結(jié)
以上是生活随笔為你收集整理的java endpoint原理_Endpoint的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Portlet 规范概述
- 下一篇: Aruba7010 默认密码_【对讲机的