【问题标题】:Design RESTful URI设计 RESTful URI
【发布时间】:2011-07-14 10:21:55
【问题描述】:

我正在创建一个 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?

(试图通过“分析”twitter 和 FF 来“识别”良好实践但失败了)

【问题讨论】:

    标签: api http rest get


    【解决方案1】:

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

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

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

    在您上面的示例中,我会坚持使用查询字符串参数。尽管 REST 通常具有更直观的 URL,但这并不是 REST 的真正意义所在。 REST 更多的是关于超媒体和HATEOAS

    【讨论】:

    • 感谢您的解释!它填补了我对 REST“设计原则”的概念空白。不知道 HATEOAS,但我喜欢这种态度。
    【解决方案2】:

    在设计 REST API 时需要遵循的 REST 最佳实践很少

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

    Read More

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2021-09-30
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多