[译]Ocelot - Headers Transformation
Add to Request
为上游请求添加请求头,只需如下一样将下面的配置添加到一个ReRoute里:
"UpstreamHeaderTransform": {
"Uncle": "Bob"
}
上面的例子中添加了一个键为Uncle,值为Bob的请求头。
支持Placeholders。
Add to Response
还可以为下游服务添加响应头, 如下一样将下面的配置添加到一个ReRoute里:
"DownstreamHeaderTransform": {
"Uncle": "Bob"
},
如果你想返回Butterfly APM trace id,可以如下配置:
"DownstreamHeaderTransform": {
"AnyKey": "{TraceId}"
},
Find and Replace
为了transform一个http头,我们需要指定一个http头的键,然后入下一样设置transform:
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
键是“Test”, 值是“http://www.bbc.co.uk/, http://ocelot.com/”。这个值得意思是将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。相应的语法是:{find}, {replace}。
Pre Downstream Request
下面的位于一个ReRoute的配置会将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。 这个请求头在请求下游的时候会被修改,然后再发送至下游服务器。
"UpstreamHeaderTransform": {
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
}
Post Downstream Request
下面的位于一个ReRoute的配置会将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。ocelot在收到下游服务器的响应的时候回将替换掉响应的http响应头。
"DownstreamHeaderTransform": {
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
},
Placeholders
header transformation支持placeholder。
- {BaseUrl} - 这个使用的是Ocelot的base url。例如值为:http://localhost:5000
- {DownstreamBaseUrl} - 这个使用的是下游服务的base url。例如值为:http://localhost:5000。这个只有在
DownstreamHeaderTransform里面才有效 - {TraceId} - 这个使用的是 Butterfly APM Trace Id。这个只有在
DownstreamHeaderTransform里面才有效
Handling 302 Redirects
Ocelot默认是自动根据响应头里面的Location自动跳转的。如果你想将响应头里面的location返回给客户,可以如下一样配置。
"DownstreamHeaderTransform": {
"Location": "http://www.bbc.co.uk/, http://ocelot.com/"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
还可以使用BaseUrl placeholder。
"DownstreamHeaderTransform": {
"Location": "http://localhost:6773, {BaseUrl}"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
如果使用了负载均衡,下游的base url可能会有多个,可能会导致上面的配置不能正常工作。这种情况下可以如下一样配置。
"DownstreamHeaderTransform": {
"Location": "{DownstreamBaseUrl}, {BaseUrl}"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
[译]Ocelot - Headers Transformation的更多相关文章
- [译]Ocelot - Claims Transformation
原文 用户授权后才能使用此功能. 用户获得授权后claims将被发送到claims transformation中间件.用户授权后,我们首先调用claims to headers middleware ...
- .Netcore 2.0 Ocelot Api网关教程(10)- Headers Transformation
本文介绍Ocelot中的请求头传递(Headers Transformation),其可以改变上游request传递给下游/下游response传递给上游的header. 1.修改ValuesCont ...
- [译]Ocelot - Big Picture
原文 目录 Big Picture Getting Started Configuration Routing Request Aggregation Service Discovery Authen ...
- [译]Ocelot - Request Aggregation
原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.jso ...
- [译]Ocelot - Quality of Service
原文 可以针对每个ReRoute设置对下游服务的熔断器circuit breaker.这部分是通过Polly实现的. 将下面的配置添加到一个ReRoute下面去. "QoSOptions&q ...
- [译]Ocelot - Caching
原文 Ocelot支持基本的缓存,目前Ocelot的缓存是通过CacheManager project实现的. 下面的示例展示了如何启用缓存: s.AddOcelot() .AddCacheManag ...
- [译]Ocelot - Rate Limiting
原文 Ocelot支持对上游做访问限流,这样就可以保证下游不要负载太大了. 如果要启用访问限流,需要做如下配置: "RateLimitOptions": { "Clien ...
- [译]Ocelot - Service Discovery
原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如 ...
- [译]Ocelot - Getting Started
原文 Ocelot专为.NET Core而设计. .NET Core 2.1 安装 首先需要创建一个netstandard2.0项目,然后再通过nuget安装. Install-Package Oce ...
随机推荐
- SQL ROUND() 函数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数. SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_n ...
- R语言学习——数组
> #数组(array)与矩阵类似,但维度可大于2.可通过array函数构建,形式如下:myarray<-array(vector,dimensions,dimnames)> #其中 ...
- pip install urllib3[secure] 报错 error: ffi.h: No such file or directory
解决 sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging pyt ...
- Jenkins pipeline:pipeline 语法详解
jenkins pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- 【vue】vue全家桶
vue-router(http://router.vuejs.org) vuex(https://vuex.vuejs.org/zh/guide/) vue-resource(https://gith ...
- SQL其他常用的语句
阅读目录 一:汇总数据 1.理解AVG函数 2.理解COUNT()函数 3.理解max()函数 4.理解min()函数 5.理解sum()函数 二:分组数据 1 创建分组(group by) 2 HA ...
- Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)
目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Instagr ...
- 分享Winform datagridview 动态生成中文HeaderText
缘起 很久以前给datagridview绑定列的时候都是手动的,记得以前用Display自定义属性来动态给datagridview绑定列.后来发现不行,于是还在博问发了问题: 后来热心网友帮我回答了这 ...
- vue脚手架搭建移动端项目--flexible.js
通过命令行 node -v 查看是否安装node环境 在 nodejs 和 webpack已安装的前提下,随便一个文件夹下,输入命令行 npm install vue-cli -g 安装完成后,通过 ...
- java 反射的基本操作
一.反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为j ...