我的应用程序有用户,每个用户都有一张照片,可以多种尺寸下载。您将如何在JSON-API中对此进行建模?
内联对象
data: {
photo: {
small: "small.png",
large: "large.png"
}
}我在这里看到的问题是,当有6个图像大小和50个用户的列表时,我通过网络发送了300个照片URL,其中大多数都不需要。
内联URL +参数
data: {
photo: "default.png"
}这会产生较少的数据,但不清楚如何获得小/大版本。这可以通过添加一个请求param:?photo_size=small来完成,它将返回一个不同的照片url。这里的问题:您必须了解photo_size参数。从回复中看不出它是否存在。
链接
{
links: {
small_photo: "url to photo or url to user endpoint but with photo_size param (see above)"
}
}这感觉像是json-api-like,但同样会产生大量的json数据。我也不确定要链接到什么(照片或用户端点)。
URL模板
我可以返回一个模板和可用的大小,而不是为每个照片大小返回一个URL,但是afaik这不是/allowed(?)在JSON-API中(还没有?)
发布于 2018-07-31 01:43:50
如果您将图像视为用户的属性,那么我不认为JSON-API规定了如何处理到外部文件的链接。您的任何技术都将符合规范。
您的第一个数据结构将是最直接的,并且给定图像URL将主要由重复的部分组成,它们将非常好地压缩,因此每个图像的额外下载大小变化可能可以忽略不计。
以下是非常标准的:
data: {
type: "user",
id: 1,
attributes: {
photos: {
small: {
url: "https://...",
width: 50,
height: 50
},
large: {
url: "https://..."
...使用模板似乎也是合规的,因为它实际上是由客户端决定如何处理数据:
data: {
type: "user",
id: 1,
attributes: {
photos: {
base: "https://...<size>.jpg",
sizes: ["small", "medium", "large"]
...链接看起来并不合适,尽管规范对它们的定义非常松散,因为期望它们链接到其他API资源。
由于你所说的原因,内联也不是很好,你不想在客户端预先假设这些知识。
您还可以使用fields参数让客户端只请求特定的照片大小。
https://stackoverflow.com/questions/51594850
复制相似问题