
[英]Posting multiple FormDataParams with the same name to java Jersey REST service
[英]Java Rest Jersey : Posting multiple types of data (File and JSON)
我有一个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.xx开始,可以使用单独的工件形式提供多部分支持:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
然后,您只需注册该功能,如注册中所示 。
然后你可以使用@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) {
您可以在此处看到如何从客户端发送数据的示例 ,以及多部分的内部消息正文格式
其他争议:
UPDATE
在这个工件的形式中,还支持Jersey 1.xx中的multipart
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.