我正在使用RESTlet 2.0在JAVA中创建REST API。我想创建一个API调用,它将以与Facebook在其Graph API中类似的方式从数据库返回图像。
基本上,我会做 GET ,例如
http://localhost:8080/myAPI/{session_id}/img/p?id=1
然后,这将从数据库中检索blob数据,然后返回图像,以便用户可以像这样显示它:
<img src="http://localhost:8080/myAPI/{session_id}/img/p?id=1">
我知道我可能需要将标题中的内容类型设置为Image / PNG(假设图像当然是PNG),但我正在努力的是正确地返回数据以使其工作
有什么建议吗?
谢谢!
答案 0 :(得分:6)
不确定2.0,但在2.2中你可以使用这样的东西:
@Get
public Representation getImage() {
...
byte[] data = ...
ObjectRepresentation<byte[]> or=new ObjectRepresentation<byte[]>(data, MediaType.IMAGE_PNG) {
@Override
public void write(OutputStream os) throws IOException {
super.write(os);
os.write(this.getObject());
}
};
return or;
}
答案 1 :(得分:2)
使用2.2时,有一个ByteArrayRepresentation类型。
@Get("image/jpeg")
public void getIcon() {
byte[ ] your_images_bytes = ...
ByteArrayRepresentation bar
= new ByteArrayRepresentation(your_images_bytes, MediaType.IMAGE_JPEG) ;
getResponse().setEntity(bar);
}
答案 2 :(得分:0)
在我的应用程序中,我从REST方法返回byte array
。
正如您所提到的那样content-type
是image/png
。