zoukankan      html  css  js  c++  java
  • [译]Ocelot

    原文

    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,
    },
    
  • 相关阅读:
    K近邻法
    决策树
    朴素贝叶斯
    Git学习笔记
    【原】maven web项目eclipse搭建
    三道面试题
    72-74 流的考点
    57-71 容器考点
    四 java web考点
    五 数据库考点
  • 原文地址:https://www.cnblogs.com/irocker/p/ocelot-headerstransformation.html
Copyright © 2011-2022 走看看