设计RESTful URI

时间:2011-03-13 11:40:20

标签: api http rest get

我正在创建RESTful API。我读了

http://microformats.org/wiki/rest/urls

但是这个网站在设计我的API方面没有给我足够的“好”做法。 具体来说,我将编写一个API(目前只有GET方法),它将提供转换地理坐标的功能。

实施例: 因此,geohash是坐标的单值表示 /convert/geohash/u09tvkx0.json?outputformat=latlong

有道理。另一方面 /convert/latlong.xml?lat=65&long=13&outputformat=UTC需要两个输入值。

看到我的“问题”?是什么让一个好的API需要多个输入参数?

(试图通过“分析”推特和FF来“识别”良好做法,但失败了)

2 个答案:

答案 0 :(得分:4)

就被视为“技术上”正确的REST URI而言,使用查询字符串参数之间没有区别。在RFC 3986中,它声明:

  

查询组件包含非分层数据,与路径组件(第3.3节)中的数据一起用于标识资源

这就是为什么你很难找到明确的“最佳实践”。话虽如此,许多REST API确实在URI中嵌入了多个参数,而不使用查询字符串。例如,要识别汽车的make 模型,您会看到URI的网站如下:cars.com/honda/civic。在那种情况下,非常明显的是2之间的关系,所以URI中的所有内容都是“hackable”。当您只有一个唯一标识资源的参数时,坚持使用非查询字符串方法也会容易得多;但如果它类似于搜索查询,那么我可能会将其保留在查询字符串中。这个SO question也对不同的方法进行了有趣的讨论。

在上面的示例中,我会坚持使用查询字符串参数。虽然REST通常具有更直观的URL,但这并不是REST的用途。 REST更多地是关于超媒体和HATEOAS

答案 1 :(得分:0)

设计REST API时,很少有REST最佳实践

  1. 摘要与混凝土
  2. CRUD操作
  3. 错误处理
  4. API版本控制
  5. 过滤
  6. 安全
  7. 分析
  8. 文档
  9. 稳定性和一致性
  10. 网址结构
  11. Read More