当前位置: 首页 > 知识库问答 >
问题:

在泽西Rest服务中发送文件和元数据

萧晓博
2023-03-14

我需要使用泽西2.0创建一个ReST服务。我需要向客户端发送多个文档和元数据。实现这一点的最佳方法是什么。

我能够从服务器发送一个多部分响应,但是不知道如何从客户端代码中读取它

共有1个答案

宿洋
2023-03-14

假设您有一个名为“document1”的文档,您希望通过客户端获取该文档。在REST-API中,文档(资源)的唯一标识符可以是:

http://example.com/restapi/documents/document1

当您想要读取数据时,需要对该uri执行HTTP-GET请求。对于您来说,这里有一个重要的部分:一个资源可以有多个表示形式-在您的情况下是元数据和二进制数据。

因此,客户端必须告诉服务器要获取哪种表示类型(内容协商)。例如,可以在客户端请求的 ACCEPT 标头中设置此信息。您可以使用内容类型“application/json”作为元数据的表示形式。

遗憾的是,您没有告诉我们您想要发送哪种二进制数据。例如,如果它们是pdf,内容类型将是“应用程序/pdf”。如果二进制数据没有特定的类型,你可以使用“应用程序/八进制流”。

当然,在服务器端也有工作要做。这里有一个例子:

@Path("/documents/{documentname}")
public class docResource {

    @GET @Produces("application/json")
    public Response getDocumentMetaData(@PathParam("documentname") String docName) {
        // Create a Response containing a json
    }
    @GET @Produces("application/pdf")
    public Response getDocumentBinaryData(@PathParam("documentname") String docName) {
        // Create a response containing the binary data
    }

    ...
}

Jersey将检查客户端的accept头并运行适当的方法。另见:https://jersey.java.net/documentation/latest/jaxrs-resources.html

如果您与jackson一起使用jersey,您还可以轻松地将POJO封送至JSON,反之亦然:http://examples.javacodegeeks.com/enterprise-java/rest/jersey/json-example-with-jersey-jackson/

如果你不确定在“getDocumentBinaryData”-方法中做什么- checkout这个简单的例子来自mkyong:http://www . mkyong . com/web services/jax-RS/download-excel-file-from-jax-RS/

 类似资料:
  • 这里有很多链接建议使用多部分/表单数据,以及如何在这里上传文件。对于通过CURL命令上载的多个文件的组合,以及接受FormDataMultiPart的REST服务,无法真正找到一个。 当前正在使用的代码如下所示: 我尝试调用该服务的CURL是: 卷曲-X柱“http://localhost:37200/api/sample-批量“-H”接受:应用程序/json“-H”内容类型:多部分/表单数据“-

  • 我对web服务非常陌生。我已经公开了一些使用与Spring集成的Jersey 2的REST服务。现在我需要使用用户名/密码身份验证来保护那些rest服务。我被告知不要使用Spring Security。 我不知道该怎么做。我确实在网上搜索了一下,但是各种链接显示了不同的实现方式,我无法决定如何进行。

  • 我试图用Jersey发送一个带有POST的ByteArrayOutputStream压缩文件。

  • 当我尝试在任何一点使用定位器时,我仍然无法创建我使用locator.create(mything.class)方法在AbstractBinder中注册的东西的实例。 我确信它们是正确绑定的,因为它们通过@inject字段注释被正确地注入到我的资源类中。 不同的是,Jersey/HK2框架正在实例化我的资源类(正如预期的那样,因为它们在我的包扫描路径中),但我似乎无法通过代码来利用ServiceLo

  • 我正在尝试编写一个Jersey客户端应用程序,它可以将多部分表单数据发布到Restful Jersey服务。我需要发布一个包含数据的CSV文件和一个包含元数据的JSON文件。我使用的是Jersey客户端1.18.3。这是我的密码(为了公司保密,有些名字已经改了)。。。 现在我在最后一行得到一个编译错误,说它不能从void转换到ClientResponse。 我之前从这篇文章中得到了一些关于Rest

  • 我有一个rest服务,接受正常参数和文件形式的多部分。 我想用resttemplate将数据和文件发送到上面的rest服务。 在我发送正常字符串数据之前,没有任何问题。一旦我添加了发送字节的代码,然后我开始得到400个坏的请求错误。 客户端代码