【问题标题】:RESTful URI design - is multiple URIs for resources user-friendlyRESTful URI 设计 - 是用户友好的资源的多个 URI
【发布时间】:2012-07-31 19:57:58
【问题描述】:

假设我有以下实体:项目、公司、主管。

以下关系适用:

  • 一个项目有一个公司
  • 一家公司只有一名董事
  • 一位董事可以是多家公司的董事
  • 一家公司可以管理多个项目

我曾设想过这样的 URI 设计:

 GET  /projects
 GET  /projects/{id}
 GET  /projects/{id}/company
 GET  /projects/{id}/company/director
 PUT  /projects/{id}/company           # makes new/overwrite company
 POST /projects/{id}/company           # updates company
 PUT  /projects/{id}/company/director  # makes new/overwrite director
 POST /projects/{id}/company/director  # updates director

对于相同的资源有多个 URI 是否可以/对用户友好,例如:

 POST /companies                       # makes a new company
 POST /companies/{id}                  # updates company
 GET  /companies/{id}
 POST /directors                       # makes a new director
 POST /directors/{id}                  # updates director
 GET  /directors/{id}

这种良好的 URI 设计是否符合最佳实践?以上 URI 设计的优缺点是什么?

【问题讨论】:

    标签: rest restful-architecture


    【解决方案1】:

    第一种形式的 URL 暗示了一个树形结构,其中公司属于一个且仅一个项目,董事属于一个且仅一个公司。是这样吗?

    如果不是,我更喜欢第二种形式的 URL。您将所有三种资源类型都彼此相邻,没有隐含的树结构。在资源表示中,您可以使用链接从项目导航到公司再到董事。

    【讨论】:

    • 不,公司可以管理多个项目,因此您的“平面”URI 解决方案似乎更好。仅支持“GET /projects/{1}/company”以减少 GET 数量是否可以?
    猜你喜欢
    • 2011-11-29
    • 2021-09-30
    • 2011-08-05
    • 2011-05-03
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多