当前位置:  开发笔记 > 运维 > 正文

正确的RESTful动词

如何解决《正确的RESTful动词》经验,为你挑选了1个好方法。

我有一个带条件操作的资源:

/foos/{id}/authorize
/foos/{id}/cancel

这个想法是授权会将资源的状态从保存(默认)更改为授权(由第三方应用程序).授权可以从远程部分返回错误或者可以被授权.一旦授权,资源就无法再次被授权,因此这不是可以一次又一次调用的动作.

撤消授权资源时会发生取消.一旦取消,资源将永久保留.

考虑到此操作不安全并且不能被视为幂等因为第二次调用会返回"资源已被取消"这样的错误并且同时我不创建这种操作的RESTful世界中正确的动词是什么一个新资源,只是在已知资源中进行状态更改?



1> guillaume31..:

我会用

DELETE /authorization/1234

关于DELETE对以前删除的资源的幂等性存在争议.请参阅https://evertpot.com/idempotence-in-http/和https://leedavis81.github.io/is-a-http-delete-requests-idempotent/

这里的底线是,在一个总有一个结果的数学世界中,幂等性是有意义的,但在HTTP中你会得到两个不同的结果 - 服务器的响应和资源的新状态.很难确定什么是幂等的,什么不是幂等的.

在HTTP规范不明确的领域,我推荐了parmatmatism而不是教条主义.

如果你真的想客户知道他们是否删除该资源或自己,如果别人没有的话,我看不出有什么问题,在以前删除的资源响应404.

如果您不关心,或者认为它永远不会发生(因为没有足够的并发访问或者因为所有客户端总是在发送DELETE之前都会进行GET时刻),所以在所有情况下都可以愉快地坚持204.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有