假设我们有一个网站,我们有一个项目列表。在这些项目中的每一个上,您可以启动几个不同的过程,这些过程将产生与相关项目相关的某种输出。您应该如何设计以最恰本地使用 http 动词?我想要的是每个项目有多个链接,每个链接触发其中一个操作,但在我的场景中,它与 HTTP-VERB get 不匹配,如果我使用链接,将使用它。另一方面,我不希望所有按钮都在一个单独的表单中,并且具有不同的操作。
这有点难以解释,但希望你理解,这应该是一些最佳实践。
最佳答案
你不应该使用 GET。 GET 请求应该是 safe这意味着它们仅用于信息检索,不应更改服务器的状态。 (即日志之类的事情是可以的,但实际更新应用程序状态的事情是禁忌。)想想一个爬虫检查你的应用程序。任何你不介意爬虫通过的东西都适合 GET,但这听起来不像你的情况(因为你说,“启动几个不同的进程”,但我可能会误解你的用例)。
剩下的就是 PUT、DELETE 和 POST。 PUT 和 DELETE 必须是 idempotent ,这意味着多个相同的请求应该与单个请求具有相同的效果。所以如果你有一个请求更新一个人的名字,例如,如果你调用它一次或 100 次,这个人的名字仍然是一样的,所以它是幂等的。
POST 是最灵活的动词。如果您启动的进程不安全或幂等(或者即使它们是),您可以使用 POST,它不能保证任何有关安全或幂等的内容。缺点是:
关于language-agnostic - 自定义操作应该使用哪个动词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650857/