如何解决使用 RESTEasy 的休息客户端的可选响应主体
我正在为 Quarkus 编写 POC。我正在使用此 quick start guide 来构建 REST 客户端。我将要集成的 REST 服务是第三方的。这是我当前实现的一个简单示例:
@Path("/v1")
@RegisterRestClient
public class EmployeeApi {
@POST
@Path("/employees")
ApiResponse createEmployee(@RequestBody Employee employee)
}
这很好用。我遇到的问题是第三方 API 将根据成功/失败返回响应正文。在它确实失败的情况下,它会在响应正文 (ApiResponse
) 中提供有关失败原因的详细信息。当它成功时,它什么都不返回。这会导致 Quarkus 抛出以下异常:javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/octet-stream and type com.test.app.ApiResponse
我尝试将 ApiResponse
包装在 Optional
类型中,但没有解决问题。我在 Quarkus / RESTEasy 文档中完全看不到任何表明解决方法的内容。
我想知道我是否应该改用 javax.ws.rs.core.Response
。
解决方法
问题是 JaxRS
试图使 ApiResponse
适合默认返回类型 application/octet-stream
您应该确保明确指定您要返回 application/json
这可以在您的服务之上使用 @Produces(APPLICATION_JSON)
。
这是正确的代码片段
@Path("/v1")
@RegisterRestClient
public class EmployeeApi {
@POST
@Path("/employees")
@Produces(APPLICATION_JSON)
ApiResponse createEmployee(@RequestBody Employee employee)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。