Разработка REST API, который поддерживает несколько размеров экрана
До сих пор все мои эскизы были 150x150. Я хотел бы поддерживать разные размеры миниатюр, чтобы иметь дело с разными моделями Android/iPhone.
Я рассматривал этот способ поддержки нескольких размеров. Всегда работаю с квадратными миниатюрами, чтобы сделать вещи проще.
Получение миниатюры 75х75
GET http://example.com/gallery?resolution=75
...
{
"id": 1001,
"thumbnail": "http://lh5.ggpht.com/EEIl3_hedJSAT4RscoceShtWy3DE4WGKXXNp4rusI-kpzWfDIbzrWx1KVywf9YqGI-elD_k4xg8bUemeRTtLgtAPOlVc0kpw=s75"
}
Получение миниатюры 150х150
GET http://example.com/gallery?resolution=150
...
{
"id": 1001,
"thumbnail": "http://lh5.ggpht.com/EEIl3_hedJSAT4RscoceShtWy3DE4WGKXXNp4rusI-kpzWfDIbzrWx1KVywf9YqGI-elD_k4xg8bUemeRTtLgtAPOlVc0kpw=s150"
}
Я видел много API, которые не поддерживают нестандартные размеры, например, API Flickr поддерживает маленький, средний, большой и оригинальный размер.
Можно ли как-нибудь улучшить этот API?
1 ответ
Ну, вы могли бы иметь фиксированные значения, такие как Flickr API (Small, Medium, Large и Original). То, что вы могли бы сделать, - это предварительно отрендерить и сохранить их, что означает, что вы можете напрямую захватывать их с диска или из кэша, а не рендерить их на лету. Ваш URL запроса может выглядеть примерно так:
GET http://example.com/gallery?resolution=small
Однако, если вы хотите обеспечить максимальную гибкость, вам следует продолжить работу с API сейчас и позволить пользователю API указать размер квадрата. У вас должен быть установлен фиксированный максимум, чтобы остановить злоупотребления. Примером этого может быть API Gravatar, который имеет фиксированный максимум 512 пикселей, а размер можно указать с помощью s=
параметр в URL.
В конце концов, это зависит от вашего соотношения затрат и выгод. Будет ли существенно сложнее поддерживать API гибкого размера, а не API предварительно фиксированного размера (размеров), и требует ли рендеринг на лету больших вложений в серверы / оперативную память / пропускную способность и т. Д.