我想构建一个RESTful Web服务,实现生物数据数据库的搜索界面.
典型的搜索请求可能涉及数据的十几个属性.例如,按科学名称搜索,将搜索限制在小于100米的水深处.我的第一直觉是拥有查询字符串中的所有属性,例如?searchType = sciname&sciname = mola + mola&maxdepth = 100&mindepth = 0
但是,查询字符串被认为是非RESTful的,请参阅http://rest.blueoxen.net/cgi-bin/wiki.pl?QueryStringsConsideredHarmful
我已经看过一些早期的SO讨论,例如用于搜索的RESTful URL设计, 我仍然不清楚这一点,所以我的问题:
是否存在可接受的搜索服务RESTful URL标准或模式,其中可能存在任意数量的过滤值?
在Web的REST风格中:
request-uri 的路径组件标识特定资源.
request-uri 的query-string组件标识在呈现该资源时完成的任何特定过滤器或更改.
的接受报头标识的特定内容类型,其中给定的资源,过滤符合规定,应该被呈现.
在接受语言报头标识该给定资源,过滤符合规定,应该被呈现的特定语言.
所以回答你的问题:
GET /species?searchType=sciname&sciname=mola+mola&maxdepth=100&mindepth=0
非常合适.