ASP.net webapi为所有出站请求添加标头

时间:2016-11-24 17:33:33

标签: c# asp.net asp.net-web-api

我有一个asp.net webapi应用程序在后端使用一些外部服务,有没有办法为所有出站请求添加自定义标头(如休息或肥皂需求)?我可以创建一个过滤器,但它只拦截我的webapi客户端的传入请求和响应。

1 个答案:

答案 0 :(得分:0)

针对您的问题的两种可能的解决方案:

  1. 创建http请求模块的自定义版本(HttpClient,HttpWebRequest,...),对程序集进行签名,然后在GAC上注册,https://stackoverflow.com/a/9266821/5270073中提供了一个示例。
  2. 这种方法的不足之处在于,每次开发人员使用新模块来使用外部服务时,您都需要实现并注册此自定义新模块。

    1. 在您的基础架构(Kong,Tyk,...)中添加API网关或代理,在此网关中注册外部服务并使用API​​网关中的外部服务。您可以使用此网络组件轻松地向所有请求添加自定义标头。
    2. 流程:

      api.mydomain.com => externalservice.com
      

      更改为:

      api.mydomain.com => apigateway.mydomain.com/externalservice => externalservice.com
      

      我个人更喜欢第二种选择,因为:

      • 您可以控制服务的消耗;
      • 您可以将自定义标头添加到其他应用程序服务器;
      • 此方法符合DevOps惯例。

      自定义对Kong的请求:https://getkong.org/plugins/request-transformer/

      自定义Tyk上的请求:https://tyk.io/tyk-documentation/transform-traffic/request-method-transform/