假设我们有一个集合/ads/
,而那个集合的实体结构是:
{"make": "Audi", "model": "A4"}
所以我的问题是:如果我想以不同的形式表示同一个实体该怎么办。例如:
{"aggr": "Audi A4"}
它应该是相同的 uri 只是具有不同的查询参数吗?/ads/?schema=aggr
还是新资源?
/aggr?resource=ads
假设我们有一个集合/ads/
,而那个集合的实体结构是:
{"make": "Audi", "model": "A4"}
所以我的问题是:如果我想以不同的形式表示同一个实体该怎么办。例如:
{"aggr": "Audi A4"}
它应该是相同的 uri 只是具有不同的查询参数吗?/ads/?schema=aggr
还是新资源?
/aggr?resource=ads
您的资源不会改变,只会改变它的表现形式。在休息原则中,您应该为此使用超媒体,并通过请求标头进行选择:
Accept: application/vnd.api.adsrepresentation1+json;
Accept: application/vnd.api.adsrepresentation2+json;
我可能会使用相同的资源并根据 Accept 标头参数表示不同的模式。
如果这是您的默认架构,则对/ads
with的请求Accept: application/json
将返回。{"make": "Audi", "model": "A4"}
/ads
对with的请求Accept: application/json; schema=aggr
将返回{"aggr": "Audi A4"}
。