RESTAPI访问自/自对象的最佳实践

RESTAPI访问自/自对象的最佳实践,rest,authorization,jwt-auth,Rest,Authorization,Jwt Auth,假设我正在创建一个日志应用程序,我希望用户能够将条目发布到他们的日志中 我不打算允许用户(甚至是版主)在别人的日志中发布条目 也就是说,在我的端点路径中是否有公开帐户或日志id的参数 我认为postapi/journals/postEntry就足够了,因为我可以通过访问令牌或JWT令牌确定用户 有人能想出在路径中提供日志ID的理由吗?例如:postapi/journals/{user journalId}/postEntry 有人能想出在路径中提供日志ID的理由吗?例如:PostAPI/jour

假设我正在创建一个日志应用程序,我希望用户能够将条目发布到他们的日志中

我不打算允许用户(甚至是版主)在别人的日志中发布条目

也就是说,在我的端点路径中是否有公开帐户或日志id的参数

我认为
postapi/journals/postEntry
就足够了,因为我可以通过访问令牌或JWT令牌确定用户

有人能想出在路径中提供日志ID的理由吗?例如:
postapi/journals/{user journalId}/postEntry

有人能想出在路径中提供日志ID的理由吗?例如:PostAPI/journals/{user journalId}/postEntry

简短回答:这违反了统一接口约束

实际上,您所做的是创建世界的这个小角落,在这里,您不是使用目标uri来标识资源,而是使用目标uri+令牌

这意味着您的东西没有使用世界上通用组件所期望的语义

例如,当我将URI从我的用户代理中复制出来,并与其他人共享时,其他人不会得到我期望的结果——他们最终会查看自己的视图,而不是我的视图

事实上,我们可以在一封电子邮件中粘贴一个URI,让它只对阅读电子邮件的人起作用,这在收养故事中是一个非常重要的部分

此外,REST中的密钥依赖于能够使用标识符作为主缓存密钥。因此,定制的身份机制可能会破坏缓存

实际上:您使用的是HTTP,HTTP具有缓存请求的规则。所以上面提到的缓存问题纯粹是理论上的

您可能会考虑的替代方案

  • 您可以安排
    /api/journals/postEntry
    /api/journals/{userJournalId}/postEntry
  • 您可以使用标题来指示当前表示有一个更具体的标识符
  • 您可以使用帮助客户端从备选方案导航到首选资源