【问题标题】:RESTFul API Design SuggestionRESTFul API 设计建议
【发布时间】:2018-07-30 09:14:00
【问题描述】:

我正在进行 RESTFul API 设计,但对以下用例感到困惑:

我有用户和用户贷款的地方。 API 是必需的 a) 用户管理 b) 获取所选用户的贷款信息。

用例 a) 相当简单。端点将是 GET /api/users/ 以获取用户信息。 它如何设计API端点来获取用户的负载信息:

GET /api/loans/<user unique id>/
or
GET /api/users/<user unique id>/loans

请注意,尽管它们都用于唯一地标识用户,但它们是不同的。

任何建议将不胜感激。

谢谢你,
拉杰

【问题讨论】:

    标签: rest api restful-architecture restful-url


    【解决方案1】:

    REST 不在乎您对资源标识符使用什么拼写。

    因此,标识符拼写很像变量名拼写;选择符合当地惯例的拼写是个好主意。

    URI 规范将hierarchical information 与非分层信息区分开来。有人可以合理地争辩说,“Bob 的贷款收集”在层次上从属于“Bob”,并且标识符的拼写应该反映这一点

    /api/users/12345
    /api/users/12345/loans
    

    这种拼写的另一个优点是引用 Bob 下属的其他资源是微不足道的,这要感谢relative references

    uri(/api/users/12345/addresses) === uri(/api/users/12345/loans).resolve(../addresses)
    

    但是,这对资源之间的关系没有任何影响。例如,对/api/users/12345 的成功不安全请求将invalidate 先前缓存该资源的表示,但这对/api/users/12345/loans 没有任何影响。

    例如:

    GET /api/users/12345/loans
    DELETE /api/users/12345
    

    就客户端而言,标识符拼写的相似之处并不意味着这两种资源之间有任何特殊关系;即使用户资源已被删除,缓存中loans 资源的表示仍将被视为有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2011-08-25
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多