GoLang Martian lib 之应用解析(二)

GoLang Martian lib 之应用解析(二)

GoLang Martian lib 之应用解析(一)中,我们介绍了Martian lib提供的功能,同时对其使用做了简单的介绍,这篇文档将通过Martian lib的代码解析,来分析Martian lib是如何实现Proxy、Request、Response的Modifier的。

Martian代码结构

GoLang Martian lib 之应用解析(二)

GoLang Martian lib 之应用解析(一)中,我们介绍了Martian lib提供的功能,同时对其使用做了简单的介绍,这篇文档将通过Martian lib的代码解析,来分析Martian lib是如何实现Proxy、Request、Response的Modifier的。

Martian代码结构

在martian的根目录中,还有几个文件比较重要:

martian.go :package martian 提供了HTTP/1.1 proxy,通过API来配置Request和Response 的Modifier

init.go : maritan命令初始化参数

proxy.go : 通过 martian框架来实现的一个代理服务器

multierror.go:实现了 error 接口的一个 errors集合

context.go:提供了 Contex 和 Session模型

解析

martian框架提供了 Modifier 的插件机制,其实现标准是:在新的插件中实现这两个接口之一就可以了:

下面我们来看一个例子:

当然,一个Modifier如果要生效,需要在代码的 init func中对这个Modifier进行注册,比如:

在 varify package中,同样定义了另外一对接口,用来实现对Request和Response的verify操作:

如上,如果需要对Request和Response进行校验操作,可以通过实现上述接口来达成。

此条目发表在同步技术分类目录。将固定链接加入收藏夹。