搜索

2.7.11.2. 使用多部分数据的输出

download PDF

RESTEasy 提供了一个简单的 API 来输出多部分数据。

package org.jboss.resteasy.plugins.providers.multipart;

public class MultipartOutput {

    public OutputPart addPart(Object entity, MediaType mediaType)
    public OutputPart addPart(Object entity, GenericType type, MediaType mediaType)
    public OutputPart addPart(Object entity, Class type, Type genericType, MediaType mediaType)
    public List<OutputPart> getParts()
    public String getBoundary()
    public void setBoundary(String boundary)
}

public class OutputPart {

    public MultivaluedMap<String, Object> getHeaders()
    public Object getEntity()
    public Class getType()
    public Type getGenericType()
    public MediaType getMediaType()
}

若要输出多部分数据,您需要创建一个 MultipartOutput 对象并调用 addPart() 方法。RESTEasy 将自动查找 MessageBodyWriter 来托管您的实体对象。与 MultipartInput 类似,有时您可能会有对通用类型的元数据敏感的托管。在这种情况下,使用 GenericType。通常,传递对象及其 MediaType 应该足够。

示例:返回 多部分/混合 格式

@Path("/multipart")
public class MyService {

    @GET
    @Produces("multipart/mixed")
    public MultipartOutput get() {

        MultipartOutput output = new MultipartOutput();
        output.addPart(new Customer("bill"), MediaType.APPLICATION_XML_TYPE);
        output.addPart(new Customer("monica"), MediaType.APPLICATION_XML_TYPE);
        return output;
    }
}

注意

上例假定 客户 类标有 Jakarta XML Binding。

2.7.11.2.1. 使用 java.util.List的多部分输出

如果正文部分是统一的,您不必手动托管每个部分,甚至每个部分,甚至使用 MultipartOutput 对象。您可以提供 java.util.List,该类型必须具有正在捆绑的通用类型,并附带 List 类型声明的 generic 参数。您还必须使用 @PartType 注释给方法标注,以指定各个部分的媒体类型。

示例:返回 客户 对象 列表

@Path("/multipart")
public class MyService {

    @GET
    @Produces("multipart/mixed")
    @PartType("application/xml")
    public List<Customer> get(){
        ...
    }
}

注意

上例假定 客户 类标有 Jakarta XML Binding。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.