使用Express指定特定路径

时间:2017-08-07 05:29:18

标签: javascript express

我无法让我的.get()工作。我对.use()vs .get()的理解是.use()用于我们想要应用的路径,而.get()更具体(选择要应用的特定URL)

在我的示例中,我想显示“适用于所有页面”#39;到任何页码,但如果我输入' / 28',我希望显示.get消息。现在,即使我去了/ 28,我也会收到.use消息。

batch.commit(finalize=True)

4 个答案:

答案 0 :(得分:1)

来自extension methods

  

使用router.use()定义中间件的顺序非常重要。它们是按顺序调用的,因此顺序定义了中间件优先级。

在您的示例中,匹配时'/:id'优先。

因此,交换顺序以修复您的示例,并且通常首先定义更具体的处理程序。

答案 1 :(得分:1)

尝试切换.get的顺序并使用。 ExpressJS在执行时按顺序执行。阅读这篇文章以获得更多说明: https://derickbailey.com/2016/05/09/in-what-order-does-my-express-js-middleware-execute/

另外,稍微不相关但你可以先使用.get中间件,然后使用第三个参数将下一步传递给你的回调,即next(),如果你还没知道那么。

答案 2 :(得分:1)

use方法用于将所有http动词用于您的快速path或明确app中的某些router。使用use时必须考虑优先级。在这里,您所使用的use已经在router.use('/:id', ...)动态路由器中使用了get,这也将需要get请求。

您可以先使用get路由器,这样它只会在/28中接收router.get('/28', function(req, res){ res.send('Secret 28 page'); }); router.use('/:id', function(req, res){ console.log("Things " + Date.now()); res.send('Applies to all pages ' + req.params.id); }); 请求,并将所有未处理的请求转移到其他路径。

<script>
$(function(){
  var target = "collapsible_obj1_";
  var i = 1;
  
  $("#button1").click(function(){
    $(".parent_colapse1:last").clone(true).insertAfter(".parent_colapse1:last");        
    $(".parent_colapse1:last > button").attr("data-target", "#"+target+i);
    $(".parent_colapse1:last .collapse").attr("id", target+i);
    i++;
  });
  $(document).on("click",".button1",function(){
     alert();
  });
  
});
   
</script>

答案 3 :(得分:1)

.use()适用于所有路径,无论HTTP动词如何,因此在您的情况下,它适用于GET,POST,PUT以及以/:id路径和app.get("/28")开头的所有其他请求是这样的要求