我想问一个关于我正在公开的REST HTTP API的设计问题.
我有时必须访问ID为3的小部件:
http://ourserver/service/widgets/3
获取ID为3的小部件
但我有时也需要通过它的SKU#访问一个小部件.
通过2个URL公开相同的资源是不对的?
我需要我的客户通过它的ID或它的SKU来获取一个小部件.
以下哪项更好?
http://ourserver/service/widgets/bysku/skyunumberhttp://ourserver/service/widgets/skyunumber?idtype=sku再说一遍,我需要我的客户能够以两种不同的方式查找小部件.设计网址的最佳方式是什么?
Dar*_*ler 13
我建议考虑以下几点:
GET http://ourserver/service/widgets?sku=34342323
=>
303 See Other
Location: http://ourserver/service/widgets/43
GET http://ourserver/service/widgets/43
Run Code Online (Sandbox Code Playgroud)
通过使用重定向,您可以支持任意数量的条件来查找小部件.要考虑的关键问题是当您开始启用缓存时会发生什么.如果从多个URL返回表示,则最终会使用多个副本污染缓存,这使得在执行更新时使缓存中的副本无效变得更加困难.