2.7.11.2. 使用多部分数据的输出
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。