【问题标题】:Is it a good practise to tread HTTP credentials as a part of a resource identifier?将 HTTP 凭据作为资源标识符的一部分是一种好习惯吗?
【发布时间】:2012-11-12 11:37:44
【问题描述】:

我正在设计一个需要 HTTP 基本或摘要式身份验证的服务。我正在尝试权衡使用 HTTP 凭据作为资源标识符的一部分的利弊。假设每个经过身份验证的用户都有一个联系人列表。联系人是否应为:

https://myservice.com/contacts

或者说:

https://myservice.com/users/112358/contacts

?

在这种服务的情况下,用户需要被隔离。一个用户永远不需要访问与另一个用户相关的联系人或任何其他信息。出于这个原因,第一种方法看起来更简洁,因为它只在 URL 中公开必要的信息。另一方面,对于不同的 HTTP 凭据,https://myserevice.com/contacts 将是不同的资源,我不确定这是一个好的设计。

【问题讨论】:

    标签: http rest http-authentication


    【解决方案1】:

    我会选择https://myservice.com/users/112358/contacts

    如果只是因为可能存在“在”用户“下”的资源,在某些时候可能会被其他用户查看。例如用户 X 可以看到用户 112358 的文档。

    URI 的一致性是一个优势。即使使用HATEOAS,URI 的一致性对外部来说并不是一个问题,但这将有助于发展和维护 API 的实现。

    【讨论】:

      【解决方案2】:

      出于与您在问题末尾引用的相同原因,/contacts 将代表不同的资源,具体取决于提供的凭据,我建议您使用第二个更长的选项。用户是否希望记住这些 URL 并将其输入到他们的浏览器中?如果不是,长度和“漂亮”应该不是一个重要因素。

      别忘了,您始终可以将来自 /contacts 的临时重定向返回到该用户自己的联系人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        相关资源
        最近更新 更多