gpt4 book ai didi

scala - scala 中的 RESTful http DELETE 方法(玩 2.0)

转载 作者:行者123 更新时间:2023-12-01 10:20:54 24 4
gpt4 key购买 nike

我正在使用 Play 2.0 构建应用。
至于 Play 表单生成器不会生成原生 http“Delete”请求方法,它应该被替换为“Get”或“Post”。

@form(routes.Application.delete(id), 'class -> "topRight") {
<input type="submit" value="Delete this computer" class="btn danger">
}

根据 Play 示例,“发布”应该用于“删除”目的。尽管使用“获取”非常方便,因为可以用一个简单的链接替换表单(尤其是在单个页面上列出这些链接)

那么有没有理由使用 POST 来模拟 DELETE?

最佳答案

使用 POST 来模拟 DELETE 而不是 GET 的原因是因为一些 HTTP 动词(又名方法) 被 HTTP 规范认为是安全的。 These methods are HEAD, GET, OPTIONS and TRACE .这意味着在使用这些 HTTP 方法发出请求时,应用程序状态不应有任何副作用。日志记录、缓存或计数器增量通常不被视为应用程序状态修改,除非它是应用程序域的一部分。

使用 POST 来模拟 DELETE 请求而不是直接在 Web 表单中使用 DELETE 的原因是因为许多浏览器都这样做不支持直接DELETE。许多使用帮助程序生成表单标记的 Web 框架,例如 Play 和 Rails,使用您提到的技巧将请求映射到代码中相应的 REST-ish 操作。参见 HTTP Method Support in Browsers了解更多信息。另请参阅 this SO question有关此主题的更多信息。根据 W3C 最新的 HTML5 候选推荐,HTML5 FORM element does not support values for the method attribute other than GET or POST . FORM element in HTML 4.01也是如此.

关于scala - scala 中的 RESTful http DELETE 方法(玩 2.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com