【问题标题】:What is the best practice to call a DELETE restful method from a web page?从网页调用 DELETE restful 方法的最佳实践是什么?
【发布时间】:2012-06-19 15:11:11
【问题描述】:

我正在构建一个小型 Nancy Web 应用程序,它将在表上执行 CRUD 操作。它使用 GET、POST 和 DELETE 动词。我想在网页中有一个链接来调用删除方法。默认情况下,使用“锚”标签将使用 GET 方法。我不喜欢将 web 服务更改为使用 GET 动词来执行删除操作,因为它会破坏 RESTful 概念。在这种情况下,最佳做法是什么?

【问题讨论】:

    标签: c# restful-architecture nancy


    【解决方案1】:

    您不应将 GET 动词用于描述性/状态更改操作,因此使用 DELETE 或 POST 是可行的方法(在您的情况下,DELETE 在语义上是正确的)。

    使用 javascript,您可以挂钩锚点单击事件并使用 DELETE 动词触发请求。

    一个带有 Jquery 的ajax method 的小样本:

    <a href='/deleteAction/myId' class='deleteLink'>Delete me</a>
    
    $('.deleteLink').click(function(e){
       e.preventDefault();
       $.ajax({
         url: $(this).attr('href'),
         type: 'DELETE',
         success: function(result) {        
      }});
    });
    

    【讨论】:

    • 感谢您的回复。那么,使用ajax是唯一的方法吗?再次感谢。
    • HTML 表单仅支持 GET 和 POST。所有主要 Web 浏览器中的 XMLHttpRequest 实现都支持其他动词,如 PUT、DELETE。所以ajax是唯一的选择。
    【解决方案2】:

    您不应该将GET 动词用于DELETEGET 被认为是一种安全操作,不应更改应用程序的状态。

    您应该使用DELETE,也可以使用POST(因为某些防火墙不允许DELETE)。

    【讨论】:

    • 感谢 Asif 的快速回复。这是我的担忧。我想在我的数据元素旁边有一个指向“/element/{elementid}/delete”路径的“删除”链接。按下时,它应该使用 DELETE 方法调用路径。如何获取正常的 html 链接来执行“DELETE”操作?
    • 你必须用 Javascript 来做,看看 nemesv 的答案。
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多