设计支持多种屏幕尺寸的REST API

时间:2011-10-02 13:22:08

标签: rest thumbnails screen-size resolution-independence

到目前为止,我所有的缩略图都是150x150。我想支持不同的缩略图大小,以便处理不同的Android / iPhone型号。

我一直在考虑这种支持多种尺寸的方式。始终使用方形缩略图使事情变得更简单。

获取75x75缩略图

GET http://example.com/gallery?resolution=75
...
{
    "id": 1001,
    "thumbnail": "http://lh5.ggpht.com/EEIl3_hedJSAT4RscoceShtWy3DE4WGKXXNp4rusI-kpzWfDIbzrWx1KVywf9YqGI-elD_k4xg8bUemeRTtLgtAPOlVc0kpw=s75"
}

获取150x150缩略图

GET http://example.com/gallery?resolution=150
...
{
    "id": 1001,
    "thumbnail": "http://lh5.ggpht.com/EEIl3_hedJSAT4RscoceShtWy3DE4WGKXXNp4rusI-kpzWfDIbzrWx1KVywf9YqGI-elD_k4xg8bUemeRTtLgtAPOlVc0kpw=s150"
}

我见过很多不支持自定义尺寸的api,例如flickr api支持小,中,大和原始大小。

这种api可以以某种方式得到改善吗?

1 个答案:

答案 0 :(得分:1)

嗯,你可以拥有固定值,如Flickr API(小型,中型,大型和原装)。你可以做的是预渲染和存储它们,这意味着你可以直接从磁盘或缓存中抓取它们而不是动态渲染它们。您的请求网址可能如下所示:

GET http://example.com/gallery?resolution=small

但是,如果您想提供最大的灵活性,则应继续使用现在的API方式,并允许API用户指定方块大小。你应该有一个固定的最大内置来阻止滥用。一个例子是Gravatar API,它具有固定的最大值512px,并且可以使用URL中的s=参数指定大小。

最后,这取决于您的成本/效益比。维护灵活大小的API而不是预先渲染的固定大小API会更加困难,并且即时渲染需要在服务器/ RAM /带宽等方面进行更多投资。