3

我想构建一个 RESTful Web 服务,为生物数据数据库实现搜索界面。

一个典型的搜索请求可能涉及十几个数据属性。例如,按学名搜索,将搜索限制在小于 100m 的水深。我的第一直觉是在查询字符串中包含所有属性,例如 ?searchType=sciname&sciname=mola+mola&maxdepth=100&mindepth=0

但是,查询字符串被认为是非 RESTful 的,请参阅http://rest.blueoxen.net/cgi-bin/wiki.pl?QueryStringsConsideredHarmful

我已经查看了一些早期的 SO 讨论,例如用于搜索的 RESTful URL 设计, 但我仍然不清楚这一点,所以我的问题是:

对于可能有任意数量的过滤值的搜索服务,是否有公认的 RESTful URL 标准或模式?

4

1 回答 1

10

在 Web 的 REST 样式中:

  • request-uri的路径组件标识特定资源。
  • request-uri的查询字符串组件标识在呈现该资源时所做的任何特定过滤器或更改。
  • Accept标头标识了一个特定的内容类型,在该内容类型中应该呈现给定的资源(按指定过滤)。
  • Accept-Language标头标识一种特定语言,按照指定过滤的给定资源应以该语言呈现。

所以回答你的问题:

GET /species?searchType=sciname&sciname=mola+mola&maxdepth=100&mindepth=0

非常合适。

于 2009-12-01T16:30:52.140 回答