Aws lambda 请求无效的API网关终结点时返回更友好的响应正文

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

我正在使用创建一个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 TOKEN}}'"
}
403禁止
状态似乎合适,但我想在响应正文中向我的客户发送一条更容易理解的错误消息


当请求无效端点时,是否有方法修改响应正文?

不幸的是,无服务器框架不支持以本机方式自定义API网关默认响应。 如果您有兴趣遵循,存储库中有一个

现在,您必须使用CloudFormation来实现这一点。有一种方法你可以用来。 你会特别想知道你想要改变什么

对于您的用例,您需要的似乎是
缺少认证\u令牌
响应类型。 这是一个示例,您可以修改并添加到
serverless.yml
(通过部分):

ResponseTemplates
中,可以根据需要设置JSON输出。 本例仅设置一个
error
属性,该属性将包含Lambda authorizer output
context
属性的属性值
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"
            }