如何将标头从请求传递到集成响应?

Posted

技术标签:

【中文标题】如何将标头从请求传递到集成响应?【英文标题】:How to pass header from request to integration response? 【发布时间】:2021-12-18 12:52:15 【问题描述】:

对 API 网关的请求将包含某些标头,例如X-header,也必须在响应中返回。因此,这些标头必须从请求传递到集成(在本例中为 SQS 队列)返回响应(集成响应)。

此刻,头部从请求传递到集成;但这不能在集成响应中访问(至少据我所知)。

地形代码:

resource "aws_api_gateway_integration" "integration" 
rest_api_id = gateway.id
resource_id = aws_api_gateway_resource.resource.id
http_method = aws_api_gateway_method.method.http_method
type = "AWS"
integration_http_method = "POST"
uri = "arn:aws:apigateway:XXXX:sqs:path/XXXXX/$var.queue_name"
credentials = aws_iam_role.iam_role_for_sqs.arn
passthrough_behavior = "NEVER"
request_parameters = 
"integration.request.header.Content-Type" = "'application/x-www-form-urlencoded'",
"integration.request.header.X-header" = "method.request.header.X-header" ,






  resource "aws_api_gateway_integration_response" "response" 
  rest_api_id = var.gateway.id
  resource_id = aws_api_gateway_resource.resource.id
  http_method = aws_api_gateway_method.method.http_method
  status_code = aws_api_gateway_method_response.response.status_code
  response_parameters = 
        "method.response.header.X-header" = "context.responseOverride.header.X-header", //how to access the header?
  


resource "aws_api_gateway_method_response" "response" 
  rest_api_id = var.gateway.id
  resource_id = aws_api_gateway_resource.resource.id
  http_method = aws_api_gateway_method.method.http_method
  status_code = 200
  response_parameters =  
        "method.response.header.X-header" = true,
       
  response_models = 
    "application/json" = "Empty"
  

我可以在文档中找到有关 requestOverride 和 responseOverride 的内容,但无法在集成阶段设置 requestOverride。

如何访问在集成阶段传递给集成响应的请求参数?

省略了部分代码。重要的部分是如何访问集成响应中的标头。

【问题讨论】:

【参考方案1】:

解决了: 覆盖响应模板中的标头将允许您通过 input.params() 访问标头

response_templates = 
    "application/json" = <<EOT
    #set($context.responseOverride.header.X-header = "$util.escapejavascript($input.params().header.get('X-header'))"))
                    
        
    EOT

【讨论】:

真的有用吗? X-header 好像不行。 “X 减去标题?”请确认。您必须将其作为占位符。你应该提到它。 @doug65536 嗨,感谢您的提问。是的,它确实有效:) 只是为了清楚,这不是一个数学表达式。因此 - 应该读作连字符

以上是关于如何将标头从请求传递到集成响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何在WPF应用程序中的SOAP客户端的“Set-Cookie”标头响应的新请求中设置“Cookie”标头

如何在将请求传递给上游服务器之前删除 Nginx 中的客户端标头?

Nginx 最全操作——nginx反向代理(5)

如何将自定义标头从 mvc 项目发送到 Web api 项目?

如何将请求标头信息传递给 Angular6 应用程序(JWT 通过请求标头发送)

如何将请求标头传递给 graphql 解析器