【问题标题】:Correct RESTful call for this resource正确调用此资源的 RESTful
【发布时间】:2011-02-09 10:26:56
【问题描述】:

我目前正在为现有基础架构设计一个 RESTful 接口,但我正在努力解决一个特定方面的问题。

我们有一组用户,可以通过/users 访问 该集合的元素可以通过/users/1 等访问

但是,每个用户都有一个好友列表,这些好友也需要能够访问。 users/1/friends 会是在这里打的宁静电话吗?它不符合成为它自己的集合的条件,因为它只与一个用户相关。

任何帮助将不胜感激

【问题讨论】:

    标签: rest restful-url


    【解决方案1】:

    就 RESTful 设计而言,URI 可以是任何你想要的。但是,为了确保您的界面可以以 RESTful 方式访问,您确实需要执行以下操作:

    <user>
        <name>Bob Smith</name>
        <link rel="friends" href="/peeps/1/amigos" />
    </user>
    

    通过添加额外的间接层,您的客户端可以发现好友列表的链接,而客户端不再关心该 URI 是什么。您可以随时更改它。

    URI 是服务器的一个实现细节,客户端不应该在它们上耦合。唯一的耦合应该是 rels 和媒体类型。

    【讨论】:

    • 我不同意 URI 只是一个实现细节,因为它们实际上是在识别您的资源。一个好的 RESTful 设计应该考虑到这一点,以提高意义和语义。
    • @PartlyCloudy 从 URI 推断语义的客户端违反了 REST 原则。 URI 应该对客户端完全不透明。您应该能够像在过程名称上一样在 URI 上运行混淆器,并且客户端应该仍然可以工作。这并不意味着能够读取 URI 对开发人员来说没有价值。
    【解决方案2】:

    我会说/user/{id}/friends 是一个合适的标识符。当然你也可以使用/users/{id}/friends,不过我个人更喜欢区分物品资源和收藏资源。

    【讨论】:

      【解决方案3】:

      我认为您的解决方案没有任何问题。完美的选择作为它所代表的 URI。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-08
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多