Как манипулировать заголовком Accept запроса для AWS API Gateway Lambda LAMBDA_PROXY интеграция - PullRequest
1 голос
/ 04 мая 2019

Я написал небольшую лямбда-функцию и развернул ее в AWS с использованием безсерверной инфраструктуры. Он предоставляет единственную функцию, которая возвращает файл PNG.

  • Когда ресурс открывается в браузере, он корректно загружает png.

  • При запросе с помощью curl curl "https://******.execute-api.us-east-1.amazonaws.com/dev/image.png" он создает версию изображения в кодировке base64.

  • Когда я запрашиваю в командной строке заголовок Accept curl -H "Accept: image/png" https://******.execute-api.us-east-1.amazonaws.com/dev/image.png", он создает двоичную image/png версию образа.

Как мне манипулировать запросом к шлюзу API, чтобы для всех запросов было установлено «Accept: image / png» независимо от источника? Или есть другой способ гарантировать, что ответ всегда будет двоичным, а не base64?

Исходный код

Код обработчика загружает изображение png с диска, а затем возвращает объект ответа с закодированным в base64 выводом изображения.

// handler.js
'use strict';

const fs = require('fs');
const image = fs.readFileSync('./1200x600.png');

module.exports = {
    image: async (event) => {
        return {
            statusCode: 200,
            headers: {
                "Content-Type": "image/png",
            },
            isBase64Encoded: true,
            body: image.toString('base64'),
        };
    },
};

Бессерверная конфигурация устанавливает функцию и использует плагины «serverless-apigw-binary» и «serverless-apigwy-binary» для установки обработки содержимого и двоичных типов MIME для ответа.

# serverless.yml
service: serverless-png-facebook-test

provider:
  name: aws
  runtime: nodejs8.10

functions:
  image:
    handler: handler.image
    memorySize: 128
    events:
      - http:
          path: image.png
          method: get
          contentHandling: CONVERT_TO_BINARY

plugins:
  - serverless-apigw-binary
  - serverless-apigwy-binary

custom:
  apigwBinary:
    types:
      - 'image/*'

package.json

{
  "name": "serverless-png-facebook-test",
  "version": "1.0.0",
  "main": "handler.js",
  "license": "MIT",
  "dependencies": {
    "serverless-apigw-binary": "^0.4.4",
    "serverless-apigwy-binary": "^1.0.0"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...