gpt4 book ai didi

java - ResponseBuilder 在与实体对象一起使用时不起作用

转载 作者:行者123 更新时间:2023-11-30 07:56:49 25 4
gpt4 key购买 nike

我正在尝试使用 responsebuilder 创建响应。当我在实体中传递字符串时它工作正常但是当我传递一些错误类时它不起作用。

这是代码

1) 工作正常

Response.status(400).entity("test").build();

2)不工作

Response.status(400).entity(new MyCustomExceptions(400,"My bad request")).build();

使用上面的代码我得到了错误

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=text/plain

当我用上面的代码调用此服务时,我收到 500 错误而不是 400。但是在第一种情况下,我收到正确的 400 错误。

  • 只是想了解如果我将对象传递给实体那么我需要重写 MyCustomExceptions 类中的某些方法?
  • 如何从 MyCustomExceptions 对象创建响应?
  • 如果我将字符串传递给实体,它工作正常。为什么?

最佳答案

将异常映射到 HTTP 错误响应

JAX-RS 允许您定义 Java 异常到 HTTP 错误响应的直接映射。

通过扩展WebApplicationException ,您可以创建特定于应用程序的异常,以构建带有状态代码和可选消息作为响应正文的 HTTP 响应。

考虑到这一点,而不是返回 Response ,你可以抛出 BadRequestException延伸 WebApplicationException并将映射到状态代码为 400 的 HTTP 响应:

throw new BadRequestException("My bad request");

有关 JAX-RS 中错误处理的更多详细信息,请参阅 answer .

WebApplicationException 的子类

为方便起见,WebApplicationException当前由以下异常扩展(并且可以扩展它们以创建您自己的异常):

关于java - ResponseBuilder 在与实体对象一起使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com