Не удается указать заголовок ответа в serverless.yml apiGatewayServiceProxies

#amazon-web-services #yaml #aws-api-gateway #amazon-sqs #serverless

#amazon-web-services #yaml #aws-api-gateway #amazon-sqs #бессерверный

Вопрос:

Я пытаюсь использовать этот плагин для бессерверного: — serverless-apigateway-service-proxy, и я хочу создать прокси-сервер apiGatewayService, который принимает запрос x-www-form-urlencoded и возвращает тело xml. Я могу сделать все это прекрасно с помощью следующего:

     - sqs:
        path: /testing-sqs
        method: post
        queueName: { "Fn::GetAtt": ["MySpecialQueue", "QueueName"] }
        request:
          template:
            application/x-www-form-urlencoded: ${file(VTL/request.vtl)}
        response:
          - statusCode: 200
            selectionPattern: '2d{2}'
            responseTemplates:
              application/xml: |-
                #set($inputRoot = $input.path('

Однако, когда я тестирую в postman или на API Gateway, заголовок типа содержимого ответа - application / json. Я могу изменить это вручную в API Gateway, установив модель метода ответа интеграции как: application /xml => Empty.

https://i.stack.imgur.com/cU7kI.png

Как я могу указать модель ответа интеграции в моем бессерверном файле.yml вместо того, чтобы делать это вручную в API Gateway?


Ответ №1:

так что, похоже, нет способа сделать это с помощью responseParameters, которые я могу найти, однако я смог заставить его работать, переопределив заголовок шаблоном сопоставления:

           - statusCode: 200
            selectionPattern: '2d{2}'
            responseTemplates:
              application/xml: |-
                #set($inputRoot = $input.path('



))
Однако, когда я тестирую в postman или на API Gateway, заголовок типа содержимого ответа - application / json. Я могу изменить это вручную в API Gateway, установив модель метода ответа интеграции как: application /xml => Empty.

https://i.stack.imgur.com/cU7kI.png

Как я могу указать модель ответа интеграции в моем бессерверном файле.yml вместо того, чтобы делать это вручную в API Gateway?

Ответ №1:

так что, похоже, нет способа сделать это с помощью responseParameters, которые я могу найти, однако я смог заставить его работать, переопределив заголовок шаблоном сопоставления:


))
#set($context.responseOverride.header.Content-Type = 'application/xml')

))

Однако, когда я тестирую в postman или на API Gateway, заголовок типа содержимого ответа — application / json. Я могу изменить это вручную в API Gateway, установив модель метода ответа интеграции как: application /xml => Empty.

https://i.stack.imgur.com/cU7kI.png

Как я могу указать модель ответа интеграции в моем бессерверном файле.yml вместо того, чтобы делать это вручную в API Gateway?

Ответ №1:

так что, похоже, нет способа сделать это с помощью responseParameters, которые я могу найти, однако я смог заставить его работать, переопределив заголовок шаблоном сопоставления: