当前位置: 首页 > 面试题库 >

Java Rest Jersey:发布多种类型的数据(文件和JSON)

公孙嘉禧
2023-03-14
问题内容

我有一个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) {

其他重读:

  • 有关Jersey多部分支持的一般信息
  • 有关的一般信息 multipart/form-data

更新

工件的形式在Jersey 1.xx中也支持多部分

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


 类似资料:
  • 在这里,我设想第一个参数是元数据的JSON字符串,第二个参数是实际数据的输入流。这样行吗?

  • 问题内容: 很抱歉,如果这是重复的,尽管我无法在任何地方找到确切的答案: 有没有办法在 postgreSQL中 创建一个包含多个数据类型的数组? 我有一个类型的列(类型文本数组);尽管我想从type插入三个条目,然后插入第四个条目到此数组中。 有办法吗?如果是这样,怎么办? 问题答案: 我不认为有一种方法可以声明具有多个类型的数组。但是,我认为您可以使用复合类型来完成您想做的事情,例如, 然后,您

  • 我正在使用recyclerView,我成功地扩展了两个视图,但每个视图的内容都来自不同的json数据类型。我尝试在适配器中传递这两个数据类型,但它们没有正确绑定 > 源代码 公共类SimpleStringRecycleWebAdapter:RecycleWebView。适配器{ } 公共类SimpleViewHolder:RecyclerView。ViewHolder{public string

  • 问题内容: 我可以用来存储多种不同类型的数据(整数/字符串/等)?我来自PHP背景,可以将不同类型的数据存储到数组中,但是我不知道如何在Java中进行操作。 举个例子: 如何用Java做类似的事情? 问题答案: Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。但是,在Java中,每个对象和基元都有严格的类型。您可以将多种类型的数据存储在Array中,但只能将其作为对

  • 问题内容: 我在python中有以下要求 发送文件,并将表单字段发送到后端。如何使用Angular $ http进行相同操作(发送文件+表单字段)。目前,我确实喜欢这样,但也不确定如何发送文件。 问题答案: 我最近写了一条指令,支持本地多个文件上传。我创建的解决方案依赖于服务来填补$ http服务所标识的空白。我还包含了一条指令,该指令为您的angular模块提供了一个易于使用的API,用于发布文

  • 我知道如何发布json,我知道如何在Postman中以多部分形式发布文件。但我怎样才能同时做到这两件事呢。例如: 以下是我要发布的jason: 那么如何发布位于以及上面的json? 更新:请注意,我希望使用JSON发送文件,所以我的问题不同于使用Postman发送多部分表单。