Express Framework app.post和app.get

jen*_*poo 6 parameters syntax url-parameters node.js express

我是快速框架的新手.我在快速API参考中找不到application.post()方法的文档.有人可以提供我可以在函数中放入的所有可能参数的一些示例吗?我用以下示例阅读了几个网站,第一个参数是什么意思?

  1. 我知道第二个参数是回调函数,但我们究竟在第一个参数中添加了什么?

    app.post('/', function(req, res){
    
    Run Code Online (Sandbox Code Playgroud)
  2. 此外,假设我们希望用户以特定格式发布(向我们的服务器发送数据)ID号([{id:134123,url:www.qwer.com},{id:131211,url:www.asdf. COM}]).然后,我们想要提取ID并从我们服务器的某个位置检索那些ID的数据.我们如何编写app.post方法,允许我们操作对象数组的输入,这样我们只使用这些对象的ID(键)来检索必要的信息,而不管对象中的其他键.鉴于任务的描述,我们是否必须使用app.get()方法?如果是这样,我们将如何编写app.get()函数?

非常感谢您的投入.

Pla*_*ato 7

1. app.get('/', function(req, res){
这是告诉快递监听请求/,并运行功能,当它看到一个.

第一个参数是匹配的模式.有时一个像'/'或的文字URL片段'/privacy',你也可以做如下所示的替换.必要时,按照说明您也可以匹配正则表达式在这里.

Express的所有内部部件都遵循该function(req, res, next)模式.传入的请求从中间件链的顶部开始(例如bodyParser)并传递,直到某些内容发送响应,或者表达到链的末尾和404.

你通常把你app.router放在链子的底部.一旦快递到达那里它开始匹配对所有的请求app.get('path'...,app.post('path'...等等,它们被设置顺序.

变量替换:

// this would match:
// /questions/18087696/express-framework-app-post-and-app-get

app.get('/questions/:id/:slug', function(req, res, next){
  db.fetch(req.params.id, function(err, question){
    console.log('Fetched question: '+req.params.slug');
    res.locals.question = question;
    res.render('question-view');
  });
});
Run Code Online (Sandbox Code Playgroud)

next():
如果您定义了处理函数,function(req, res, next){}可以调用next()yield,将请求传递回中间件链.你可以这样做,例如一个catchall路线:

app.all('*', function(req, res, next){
  if(req.secure !== true) {
    res.redirect('https://'+req.host+req.originalUrl);
  } else {
    next();
  };
});
Run Code Online (Sandbox Code Playgroud)

再次,订单很重要,如果您希望它在那些之前运行,您必须将其置于其他路由功能之上.

我之前没有张过json,但@ PeterLyon的解决方案对我来说很好.


Pet*_*ons 6

TJ app.VERB(path, [callback...], callback在快速文档中烦人地记录了这一点,因此请搜索明确的文档.我不会在这里复制/粘贴它们.这是他说的不友好的方式app.get,app.post,app.put,等等都具有相同的函数签名,还有这些方法从HTTP每个支持的方法之一.

要获取发布的JSON数据,请使用bodyParser中间件:

app.post('/yourPath', express.bodyParser(), function (req, res) {
  //req.body is your array of objects now:
  // [{id:134123, url:'www.qwer.com'},{id:131211,url:'www.asdf.com'}]
});
Run Code Online (Sandbox Code Playgroud)