当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda上未显示Micronaut错误主体

卫寒
2023-03-14

我按照此处找到的说明使用graalvm构建了一个Micronaut应用程序。我配置了一个自定义错误处理程序,当在控制器上遇到请求正文的验证错误时,它会返回HttpRequest。

@Factory
public class ApiExceptionHandler {
    
    @Produces
    @Singleton
    @Requires(classes = {CustomException.class, ExceptionHandler.class})
    public ExceptionHandler<CustomException, HttpResponse<ApiResponse>> handleCustomException() {
        return (req, ex) -> {
            log.error("exception=[{}], status=[{}], message=[{}]",
                    ex.getClass().getSimpleName(), HttpStatus.BAD_REQUEST.getCode(), ex.getMessage());

            ApiResponse error = new ApiResponse.Builder(HttpStatus.BAD_REQUEST.getCode(), HttpStatus.BAD_REQUEST.getReason())
                    .error(new ErrorInfo(ex.getErrorCode(), ex.getErrorCode().getErrorMessage(), null))
                    .build();

            return HttpResponse.badRequest().body(error);
        };
    }
}

在邮递员上测试时,错误显示正常

{
    "timestamp": "2021-06-28T12:54:24.292",
    "status": 400,
    "description": "Bad Request",
    "error": {
        "code": "custom code",
        "message": "Validation Error"
    }
}

但是当在lambda上使用apigateway-aws-agent测试它时,错误主体不显示

{
  "statusCode": 400,
  "multiValueHeaders": {
    "Content-Type": [
      "application/json"
    ]
  },
  "body": "{}",
  "isBase64Encoded": false
}

如何在aws lambda函数上显示错误体?

共有1个答案

红存
2023-03-14

在响应体上添加内省解决了这个问题。

 类似资料:
  • 我正在使用库。 正在调用,但没有显示错误。可能是什么问题?我怎么解决这个?

  • 我已经安装了selenium-server-standalone-2.42.2。debian虚拟盒中的jar 并安装了火狐29.0 并尝试使用phpUnit(目录中唯一的文件)运行以下脚本: 我得到以下错误: 这是什么意思? 我尝试了几条红线,显然我必须做以下几点: 1) 要在命令shell中键入此命令 结果:我也犯了同样的错误。 2) 我已经安装了vnc4server,并将debian vm:1

  • 我已经找到了一些答案,但我的问题仍然没有解决。 我刚刚制作了一个新的应用程序,发现注册页面上的错误消息根本没有显示出来。以下是我在本网站上找到的一些答案: 只需删除,'中间件'= 或 \照明\会话\中间件\开始会话::class,\照明\视图\中间件\ShareErrs From会话::class, 从受保护的$middlewareGroup到karnel中受保护的$middleware中间件。p

  • 我只是想打开eclipse开始一个android项目,但它给了我这个错误: 发生错误。请参阅日志文件 我没有见过这样的错误,一些关于其他主题的建议没有帮助,我不知道在这个长日志文件中从何开始。如果有人能帮我,我会很感激的。

  • 创建的工作区 我读到我可以使用CountryLocalService、@Reference等。?这个代码可以吗?我可以看到我的portlet是活动的,但它并没有显示在示例小部件中。能否提供代码,以便使用CountryLocalService调用getCountriesCount()?

  • 此时,我学习了如何使用javafx-fxml应用程序制作程序。我了解了如何在listview上显示listcell。我使用下面的代码。但从代码来看,它无法在listview上显示listcell。当我运行程序时,只显示listview,而不显示listcell。请帮帮我。 Main.java 主要的fxml Student.java ListCell.fxml StudentListViewCel