从RESTlet API检索图像

时间:2012-11-15 11:50:04

标签: java restlet-2.0

我正在使用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),但我正在努力的是正确地返回数据以使其工作

有什么建议吗?

谢谢!

3 个答案:

答案 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-typeimage/png