Aws lambda 如何操作AWS API网关Lambda Lambda_代理集成的请求接受头
我编写了一个小lambda函数,并使用无服务器框架部署到AWS。它提供了一个返回png文件的函数Aws lambda 如何操作AWS API网关Lambda Lambda_代理集成的请求接受头,aws-lambda,aws-api-gateway,serverless-framework,Aws Lambda,Aws Api Gateway,Serverless Framework,我编写了一个小lambda函数,并使用无服务器框架部署到AWS。它提供了一个返回png文件的函数 在浏览器中打开资源时,它会正确加载png 当使用curlcurl“https://*****.execute api.us-east-1.amazonaws.com/dev/image.png”请求时,会生成图像的base64编码版本 // handler.js 'use strict'; const fs = require('fs'); const image = fs.readFileSy
- 在浏览器中打开资源时,它会正确加载png
- 当使用curl
会生成图像的base64编码版本curl“https://*****.execute api.us-east-1.amazonaws.com/dev/image.png”请求时,
// 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'),
};
},
};
Accept
标题curl-H“Accept:image/png”https://*****.execute api.us-east-1.amazonaws.com/dev/image.png“
请求时,它会生成图像的二进制image/png
版本// 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'),
};
},
};
我如何操作对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'),
};
},
};
无服务器配置设置函数,并使用“无服务器apigw二进制”和“无服务器apigwy二进制”插件为响应设置内容处理和二进制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"
}
}
特别是关于您的问题中要求通过API网关覆盖头的部分,您可以参考本手册:其主要思想是能够使用无服务器实现这一点。