带有状态代码的无服务器响应模板
Serverless Response Template with Status code
我想为使用 302 http 状态的重定向网页创建响应模板。
我可以使用 aws lambda 用户界面手动完成,但我需要使用无服务器框架版本 v1 来完成。
我尝试了以下代码。
response:
headers:
Content-Type: "'text/html'"
template: $input.path('$')
statusCodes:
201:
pattern: '' # Default response method
302:
pattern: 'http.*'*'
template: '$input.path('$')'
headers:
Content-Type: "integration.response.body.errorMessage"
但它不起作用。如何编写带有状态码的响应模板?
Serverless V1 当前无法使用状态代码。但是有一个使用状态码的无服务器插件
1.install 插件
npm i serverless-plugin-multiple-responses --save
2。在 serverless.yml 文件
中添加插件名称
plugins:
- serverless-plugin-multiple-responses
3。在 serverless.yml 文件中添加此自定义代码(您可以根据需要更改此代码)
custom:
defaultRegion: us-east-1
region: ${opt:region, self:custom.defaultRegion}
stage: ${opt:stage, env:USER}
standardRequest:
template:
application/json: ${file(./templates.yml):request}
standardResponseHeaders:
'Access-Control-Allow-Origin': "'*'"
'Content-Type': 'integration.response.body.headers.Content-Type'
'Expires': 'integration.response.body.headers.Expires'
'Cache-Control': 'integration.response.body.headers.Cache-Control'
'Pragma': "'no-cache'"
standardResponseTemplate: "$input.path('$.body')"
errorResponseHeaders:
'Access-Control-Allow-Origin': "'*'"
'Expires': "'Thu, 19 Nov 1981 08:52:00 GMT'"
'Cache-Control': "'no-cache, max-age=0, must-revalidate'"
'Pragma': "'no-cache'"
errorResponseTemplate: "$input.path('$.errorMessage')"
# Here we are defining what would be under "responses" in your HTTP event
# if you were not using the custom variables.
standardResponses:
200:
headers: ${self:custom.standardResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.standardResponseTemplate}
404:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.errorResponseTemplate}
properties:
SelectionPattern: '.*\"status\":404.*'
500:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.errorResponseTemplate}
properties:
SelectionPattern: '.*\"status\":500.*'
redirectResponses:
# Since we want to return 302 upon a successful completion, we remove the
# built-in default of 200
200: false
302:
headers:
Location: "integration.response.body.headers.Location"
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
404:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
properties:
SelectionPattern: '.*\"status\":404.*'
500:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
properties:
SelectionPattern: '.*\"status\":500.*'
在您的处理程序文件中添加重定向 url
module.exports.home = 函数(事件,上下文){
context.succeed({"Location":"https://test.com"})
}
在 serverless.yml 文件中定义函数及其响应
回复:${self:custom.redirectResponses}
我想为使用 302 http 状态的重定向网页创建响应模板。 我可以使用 aws lambda 用户界面手动完成,但我需要使用无服务器框架版本 v1 来完成。
我尝试了以下代码。
response:
headers:
Content-Type: "'text/html'"
template: $input.path('$')
statusCodes:
201:
pattern: '' # Default response method
302:
pattern: 'http.*'*'
template: '$input.path('$')'
headers:
Content-Type: "integration.response.body.errorMessage"
但它不起作用。如何编写带有状态码的响应模板?
Serverless V1 当前无法使用状态代码。但是有一个使用状态码的无服务器插件
1.install 插件
npm i serverless-plugin-multiple-responses --save
2。在 serverless.yml 文件
中添加插件名称plugins:
- serverless-plugin-multiple-responses
3。在 serverless.yml 文件中添加此自定义代码(您可以根据需要更改此代码)
custom:
defaultRegion: us-east-1
region: ${opt:region, self:custom.defaultRegion}
stage: ${opt:stage, env:USER}
standardRequest:
template:
application/json: ${file(./templates.yml):request}
standardResponseHeaders:
'Access-Control-Allow-Origin': "'*'"
'Content-Type': 'integration.response.body.headers.Content-Type'
'Expires': 'integration.response.body.headers.Expires'
'Cache-Control': 'integration.response.body.headers.Cache-Control'
'Pragma': "'no-cache'"
standardResponseTemplate: "$input.path('$.body')"
errorResponseHeaders:
'Access-Control-Allow-Origin': "'*'"
'Expires': "'Thu, 19 Nov 1981 08:52:00 GMT'"
'Cache-Control': "'no-cache, max-age=0, must-revalidate'"
'Pragma': "'no-cache'"
errorResponseTemplate: "$input.path('$.errorMessage')"
# Here we are defining what would be under "responses" in your HTTP event
# if you were not using the custom variables.
standardResponses:
200:
headers: ${self:custom.standardResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.standardResponseTemplate}
404:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.errorResponseTemplate}
properties:
SelectionPattern: '.*\"status\":404.*'
500:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': ${self:custom.errorResponseTemplate}
properties:
SelectionPattern: '.*\"status\":500.*'
redirectResponses:
# Since we want to return 302 upon a successful completion, we remove the
# built-in default of 200
200: false
302:
headers:
Location: "integration.response.body.headers.Location"
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
404:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
properties:
SelectionPattern: '.*\"status\":404.*'
500:
headers: ${self:custom.errorResponseHeaders}
templates:
'application/json;charset=UTF-8': "$input.path('$.body')"
'text/html;charset=UTF-8': "$input.path('$.body')"
properties:
SelectionPattern: '.*\"status\":500.*'
在您的处理程序文件中添加重定向 url
module.exports.home = 函数(事件,上下文){ context.succeed({"Location":"https://test.com"}) }
在 serverless.yml 文件中定义函数及其响应
回复:${self:custom.redirectResponses}