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。