Aws lambda 请求无效的API网关终结点时返回更友好的响应正文
我正在使用创建一个API。端点在serverless.yml文件中定义,创建API网关端点,该端点通过自定义授权器函数进行路由,并解析为Go Lambda函数 但是,如果客户端访问未明确定义的端点,并在Aws lambda 请求无效的API网关终结点时返回更友好的响应正文,aws-lambda,aws-api-gateway,serverless-framework,lambda-authorizer,Aws Lambda,Aws Api Gateway,Serverless Framework,Lambda Authorizer,我正在使用创建一个API。端点在serverless.yml文件中定义,创建API网关端点,该端点通过自定义授权器函数进行路由,并解析为Go Lambda函数 但是,如果客户端访问未明确定义的端点,并在授权头中传递其JWT令牌,API网关将返回带有以下主体的403禁止响应: { "message": "'{{JWT TOKEN}}' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer
授权
头中传递其JWT令牌,API网关将返回带有以下主体的403禁止
响应:
{
"message": "'{{JWT TOKEN}}' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer {{JWT TOKEN}}'"
}
403禁止
状态似乎合适,但我想在响应正文中向我的客户发送一条更容易理解的错误消息
当请求无效端点时,是否有方法修改响应正文?不幸的是,无服务器框架不支持以本机方式自定义API网关默认响应。 如果您有兴趣遵循,存储库中有一个 现在,您必须使用CloudFormation来实现这一点。有一种方法你可以用来。 你会特别想知道你想要改变什么 对于您的用例,您需要的似乎是
缺少认证\u令牌
响应类型。
这是一个示例,您可以修改并添加到serverless.yml
(通过部分):
在ResponseTemplates
中,可以根据需要设置JSON输出。
本例仅设置一个error
属性,该属性将包含Lambda authorizer outputcontext
属性的属性值customErrorMessage
。
你可以了解更多有关这方面的信息。
如果愿意,还可以将其设置为静态字符串,但是能够动态更改代码中的错误消息是相当不错的
resources:
Resources:
MissingAuthenticationTokenGatewayResponse: # Custom name, you can change it
Type: 'AWS::ApiGateway::GatewayResponse'
Properties:
ResponseType: MISSING_AUTHENTICATION_TOKEN # The Response Type to customize
RestApiId:
Ref: 'ApiGatewayRestApi'
StatusCode: '403' # The returned HTTP code
ResponseParameters:
# Set CORS
gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
ResponseTemplates:
application/json: |
{
"error": "$context.authorizer.customErrorMessage"
}