【发布时间】:2022-12-10 20:05:54
【问题描述】:
我正在使用 Java 和 Quarkus 框架开发一个 REST 网络服务。我想将 InputStream 作为数据类型传递给我的 Rest Resource 方法,因为应用程序执行的方法只接受 InputStream 作为输入。
当我将数据类型设置为 String 然后将其转换为 InputStream 时,一切正常,但唯一的问题是我每次都需要在代码中转换来自 String->InputStream 的输入。
我想知道是否可以接受 InputStream 本身作为 Rest Resource API 方法的数据类型,这样我就可以避免从 String 到 InputStream 的转换。当我这样做时,我只能选择读取我的 Swagger-UI 中的文件,并且由于 InputStream 数据类型,方法也不会执行。
以下是我拥有的当前代码,它运行良好:
@Path("/api")
public class ConverterResource {
@POST
@Path("/converter")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces(MediaType.APPLICATION_JSON)
public List<String> fileConverter(@HeaderParam("Content-Type") final String contentType, final String inputDocument) {
final InputStream inputDocumentStream = new ByteArrayInputStream(inputDocument.getBytes(StandardCharsets.UTF_8));
final TestClass testClass = new TestClass();
return contentType.equals("application/xml") ? testClass.xmlConverter(inputDocumentStream) : eventHashGenerator.jsonConverter(inputDocumentStream);
}
}
我想实现这样的事情,这样可以避免转换:
@Path("/api")
public class ConverterResource {
@POST
@Path("/converter")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces(MediaType.APPLICATION_JSON)
public List<String> fileConverter(@HeaderParam("Content-Type") final String contentType, final InputStream inputDocumentStream) {
//final InputStream inputDocumentStream = new ByteArrayInputStream(inputDocument.getBytes(StandardCharsets.UTF_8));
final TestClass testClass = new TestClass();
return contentType.equals("application/xml") ? testClass.xmlConverter(inputDocumentStream) : eventHashGenerator.jsonConverter(inputDocumentStream);
}
}
我对 Quarkus 很陌生,所以不确定它是否可能或者我做错了什么。任何帮助或建议都会非常有帮助。非常感谢。
【问题讨论】:
标签: java rest post quarkus quarkus-rest-client