RESTful Services中特定方案的最佳实践

bad*_*len 7 .net rest wcf web-services

我有两个简单的问题,我只是想得到社群的意见 -

  1. 如果我有一个可以使用ID或日期访问的实体(20110705),那么用于访问实体的URL约定的最佳实践是什么?

    • GET:/myEntities/{date}/myEntities/{id}?(服务将解析{object}以检查它是日期还是id.

    • GET:/myEntities/date/{date}/myEntities/id/{id}*?

  2. 在WCF休息时,我还可以做 /myEntities/?date={date}/myEntities/?id={id},这是休息的好做法?换句话说,使用最佳实践是否可以接受,?date={date}date/{date}/不仅仅是个人偏好?

提前致谢.

Ste*_*eve 8

我觉得很多这归结为偏好和风格.

话虽如此,我个人更喜欢:

/myEntities/date/{date}/myEntities/{id}

无需明确ID选项; 这是假设的.

关于#2; 我个人不喜欢这种语法:/myEntities/?date={date} 如果它在WCF中作为URI模板实现 - 因为如果您有多个参数,则假设参数的顺序可以被推挤 - 但它们不能与URI模板一起使用.但是,作为标准的查询字符串参数,这是完全可以接受的,并且在各地都可以完成 - 谷歌,雅虎,亚马逊和其他人都使用这种风格.如果有的话,这正是"查询字符串"的意思 - 查询的参数......这正是你在__检索实体时所做的.

(但我和其他人会说的一样好奇).


fum*_*chu 6

/myEntities/date/{date}应该重定向到/myEntities/{id}适合您的应用的301或307.这减少了由于多个缓存副本导致数据不同步的可能性,并使客户端清楚地知道/myEntities/date/*它只是一个备用索引,而不是一组独立资源(正如他们可能正确期望的那样,如果您没有重定向,由于HTTP URI的分层特性).