2.7.11.2.4. 带有 多部分/相关输出
RESTEasy 提供了一个简单的 API,用于输出 多部分/相关
。
package org.jboss.resteasy.plugins.providers.multipart; public class MultipartRelatedOutput extends MultipartOutput { public OutputPart getRootPart() public OutputPart addPart(Object entity, MediaType mediaType, String contentId, String contentTransferEncoding) public String getStartInfo() public void setStartInfo(String startInfo) }
package org.jboss.resteasy.plugins.providers.multipart;
public class MultipartRelatedOutput extends MultipartOutput {
public OutputPart getRootPart()
public OutputPart addPart(Object entity, MediaType mediaType,
String contentId, String contentTransferEncoding)
public String getStartInfo()
public void setStartInfo(String startInfo)
}
要输出 multipart/ 相关
,您必须创建一个 MultipartRelatedOutput
对象并调用 addPart()
方法。添加的第一个部分用作 多部分/相关消息的根部分
,RESTEasy 会自动查找 MessageBodyWriter
来托管您的实体对象。与 MultipartInput
类似,有时您可能会有对通用类型的元数据敏感的托管。在这种情况下,使用 GenericType
。通常,传递对象及其 MediaType
应该足够。
示例:返回 多部分/相关
格式以发送两个镜像
@Path("/related") public class MyService { @GET @Produces("multipart/related") public MultipartRelatedOutput get() { MultipartRelatedOutput output = new MultipartRelatedOutput(); output.setStartInfo("text/html"); Map<String, String> mediaTypeParameters = new LinkedHashMap<String, String>(); mediaTypeParameters.put("charset", "UTF-8"); mediaTypeParameters.put("type", "text/html"); output.addPart( "<html><body>\n" + "This is me: <img src='cid:http://example.org/me.png' />\n" + "<br />This is you: <img src='cid:http://example.org/you.png' />\n" + "</body></html>", new MediaType("text", "html", mediaTypeParameters), "<mymessage.xml@example.org>", "8bit"); output.addPart("// binary octets for me png", new MediaType("image", "png"), "<http://example.org/me.png>", "binary"); output.addPart("// binary octets for you png", new MediaType( "image", "png"), "<http://example.org/you.png>", "binary"); client.putRelated(output); return output; } }
@Path("/related")
public class MyService {
@GET
@Produces("multipart/related")
public MultipartRelatedOutput get() {
MultipartRelatedOutput output = new MultipartRelatedOutput();
output.setStartInfo("text/html");
Map<String, String> mediaTypeParameters = new LinkedHashMap<String, String>();
mediaTypeParameters.put("charset", "UTF-8");
mediaTypeParameters.put("type", "text/html");
output.addPart(
"<html><body>\n"
+ "This is me: <img src='cid:http://example.org/me.png' />\n"
+ "<br />This is you: <img src='cid:http://example.org/you.png' />\n"
+ "</body></html>",
new MediaType("text", "html", mediaTypeParameters),
"<mymessage.xml@example.org>", "8bit");
output.addPart("// binary octets for me png",
new MediaType("image", "png"), "<http://example.org/me.png>",
"binary");
output.addPart("// binary octets for you png", new MediaType(
"image", "png"),
"<http://example.org/you.png>", "binary");
client.putRelated(output);
return output;
}
}
注意
上例假定 客户
类标有 Jakarta XML Binding。