# 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))

```

java endpoint原理_Endpoint相关推荐

  1. 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

    参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...

  2. 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )

    文章目录 前言 一.编译生成带局部变量表的字节码文件 二.局部变量表 前言 上一篇博客 [Java 虚拟机原理]Class 字节码二进制文件分析 二 ( 常量池位置 | 常量池结构 | tag | i ...

  3. 【Java 虚拟机原理】Class 字节码二进制文件分析 六 ( 属性类型 | Code 属性 | 属性名称索引 | 属性长度 | 操作数栈最大深度 | 局部变量存储空间 | 字节码长度 )

    文章目录 前言 一.属性类型 二.Code 属性表数据结构 三.属性名称索引 四.属性长度 五.操作数栈最大深度 六.局部变量存储空间 七.字节码长度 八.存储字节码指令的一系列字节流 前言 上一篇博 ...

  4. 【Java 虚拟机原理】Class 字节码二进制文件分析 五 ( 方法计数器 | 方法表 | 访问标志 | 方法名称索引 | 方法返回值类型 | 方法属性数量 | 方法属性表 )

    文章目录 前言 一.方法表结构 二.方法计数器 三.方法表数据解析 ( init 构造方法 ) 1.方法访问标志 2.方法名称索引 3.方法返回类型 4.方法属性数量 前言 上一篇博客 [Java 虚 ...

  5. 【Java 虚拟机原理】Class 字节码二进制文件分析 四 ( 字段表数据结构 | 字段表详细分析 | 访问标志 | 字段名称 | 字段描述符 | 属性项目 )

    文章目录 前言 一.字段表总数据结构 二.访问标志 三.字段名称 四.字段描述符 五.属性项目数 前言 上一篇博客 [Java 虚拟机原理]Class 字节码二进制文件分析 三 ( 访问和修饰标志 | ...

  6. 【Java 虚拟机原理】Class 字节码二进制文件分析 三 ( 访问和修饰标志 | 类索引 | 父类索引 | 接口计数器 | 接口表 | 字段计数器 | 字段表 )

    文章目录 前言 一.访问和修饰标志 二.类索引 三.父类索引 四.接口计数器 五.接口表 六.字段计数器 七.字段表 前言 上一篇博客 [Java 虚拟机原理]Class 字节码二进制文件分析 二 ( ...

  7. 【Java 虚拟机原理】Class 字节码二进制文件分析 二 ( 常量池位置 | 常量池结构 | tag | info[] | 完整分析字节码文件中的常量池二进制数据 )

    文章目录 前言 一.常量池结构分析 1.常量池位置 2.常量池结构 3.常量池单个常量 4.常量池单个常量 tag 标签 二.常量池字节码文件分析 0.常量池附加信息 1.常量池 #1 常量分析 2. ...

  8. Java NIO原理 图文分析及代码实现

    最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.可以参考: ...

  9. java native方法_并发系列-native函数回调Java方法原理实践

    写在前面 上一篇分享了Java调用native函数过程原理实践,文章最后留了一个问题,本章主要对C程序回调我们的Java程序原理进行实践. 调用C程序之后他是怎么知道来调用我们我们的哪个方法?又是如何 ...

最新文章

  1. 理解 async/await 的执行
  2. python实现图片转字符画_Python实现图片转字符画的示例代码
  3. 解决ADB server didn't ACK问题,连上手机问题
  4. RabbitMQ入门-Topic模式
  5. 两个json对象合并为一个json对象
  6. 仓库选址(排序不等式)
  7. iOS Xcode12安装P12证书问题
  8. 关于alfa无线设备
  9. zabbix Too many processes on xxx
  10. 达梦8初始化参数之BLANK_PAD_MODE
  11. 【07月24日】预分红股息率最高排名
  12. 讯飞AIUI集成语音语义的21003错误
  13. Android广告图片轮播,支持无限循环和设置轮播样式、切换时间等
  14. 传奇开服怎么开的起来?
  15. 机器人运动学、动力学基础上利用MATLAB进行PID控制仿真
  16. mac 取消 “Ctrl+空格“切换输入法
  17. SQL Server 2012内部原理及故障排除(专栏)
  18. _ 10. 控制器和存储器一起组成了计算机核心——中央处理器,安徽2014年会计从业资格考试试题:会计电算化(第一套)...
  19. AndroidPdf框架一览(一)
  20. Unity使用UMP插件实现接入海康网络摄像头方法

热门文章

  1. Markdown的替代品:ASCIIDoc标记语言
  2. 锦佰安科技入驻AppCenter 本质提升云主机账户安全
  3. 服务器主板数码管显示ff,ESP8266之旋转编码器与四位数码管模块显示圈数
  4. python常见的数据类型是_python基本数据类型都在这里
  5. 『文献回顾』“文本自动摘要” 相关文献综述
  6. 给女朋友道歉的java代码_如何诚恳的跟女朋友道歉?
  7. 程序员女朋友礼物python代码_一位程序猿送给女朋友的礼物
  8. c语言转义字符表解析,C语言常用转义字符表
  9. python:求素数
  10. Linux:Samba 文件共享服务器的搭建与访问