我想使用 OData 并从 HTTP 缓存中获得一些好处。我已经确定了“一个实体有一个 URI”的规则。有很多方法可以对一个实体进行查询,比如说 SKU=123 的产品(即 PK):
/MyService.svc/Product(123)
或者
/MyService.svc/Product?$filter=sku eq 123
甚至
/MyService.svc/Product(123)?$filter=sku eq 123
查询此产品的最隐蔽方式是通过标题:
/MyService.svc/Product?$filter=title eq 'Some handy product'
(让我们期望这个查询只返回一个实体 - 产品 123)
我的问题是:如何响应此类查询的最 OData 方式是什么?
经过一番研究,我最后的看法是:
- 让 Product(123) 按原样工作
- 如果 $filter=sku eq 123 / id eq 123 响应 HTTP 302 和 Location 标头指向 Product(123)。
- 如果 Product(123)?$filter=sku eq 123 以 400(错误请求)响应,因为它很愚蠢。或者可能使用 302 重定向到 Product(123)..
但是最后一个案例怎么办?