10

在向 node.js 应用程序发出 DELETE 请求之前,是否需要设置任何配置?

我可以提出GET,POSTPUT请求,但DELETE请求不起作用。

DELETE http://localhost:8081/api/1.0/entry从路由记录器产生undefined,我正在使用 express 来注册路由。但看起来我什至无法解析 url / 动词。

这就是我调用它的方式:

rows.find('a.remove').on('click', function(){
    $.ajax({
        url: '/api/1.0/entry',
        type: 'DELETE'
    }).done(function(res){
        var row = $(this).parentsUntil('tbody');
        row.slideUp();
    });
});

样本日志

GET / 200 18ms  
GET /author/entry 200 10ms  
GET /api/1.0/entry 200 2ms  
GET /api/1.0/entry 200 1ms  
GET /api/1.0/entry 200 1ms  
undefined
4

2 回答 2

10

希望这可以帮助:

  • 启用日志记录作为您的第一个中间件以确保请求进入:

    app.use(express.logger());

  • 使用 methodOverride() 中间件:

    app.use(express.bodyParser());

    app.use(express.methodOverride()); // looks for DELETE verbs in hidden fields

  • 创建一个 .del() 路由:

    app.del('/api/1.0/entry', function(req, res, next) { ... });

于 2013-01-05T17:06:42.107 回答
1

并非所有浏览器都支持类型设置的PUT 和 DELETE 值:

请参阅文档http://api.jquery.com/jQuery.ajax/

您可以在 ajax 请求中使用包括data:{_method:'delete'}的POST 类型:

$.ajax({
    data:{_method:'delete'},
    url: '/api/1.0/entry',
    type: 'POST'
}).done(function(res){
    var row = $(this).parentsUntil('tbody');
    row.slideUp();
});
于 2013-09-10T21:59:15.207 回答