0

我正在为 Quarkus 编写 POC。我正在使用此快速入门指南来构建 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改用。

4

1 回答 1

0

问题是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)
}
于 2021-04-06T18:12:05.633 回答