gpt4 book ai didi

Java 休息 Jersey : Posting multiple types of data (File and JSON)

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:01 25 4
gpt4 key购买 nike

我有一个 Jersey REST 服务,数据将发布到该服务。将有一个 CSV 文件,它是该 CSV 的实际数据和一些元数据(元数据可以是 JSON 或 XML 格式)。如果这两个都需要发布,服务的方法签名和伴随注释应该如何显示,应该是类似...

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public CreateTaskVO provideService(@FormParam("meta") String v1,
@FormParam("data") InputStream v2) {

在这里,我设想第一个参数是元数据的 JSON 字符串,第二个参数是实际数据的输入流。这行得通吗?

最佳答案

你应该使用一些多部分格式。它基本上由 multipart/xxx 类型的单个消息组成(其中 xxx 可以类似于 form-data),并且该消息由其他具有自己的内容类型和其他元数据的“完整”消息。

您还没有指定哪个 Jersey 版本,但是从 Jersey 2.x.x 开始,以单独工件的形式提供了多部分支持:

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>

然后你只需要注册这个功能,如图here in Registration .

然后你就可以使用@FormDataParam

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public CreateTaskVO provideService(
@FormDataParam("meta") String jsonMeta,
@FormDataParam("data") InputStream file,
@FormDataParam("data") FormDataContentDisposition fileDetail) {

可以看到here an example如何从客户端发送数据,以及多部分的内部消息体格式

其他阅读:


更新

在 Jersey 1.x.x 中也支持 multipart,以 this artifact 的形式

<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>

关于Java 休息 Jersey : Posting multiple types of data (File and JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643558/

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