Express框架app.post和app.get

我对expression式框架相当陌生。 我无法在express API参考中findapplication.post()方法的文档。 有人可以提供一些我可以放在函数中的所有可能参数的例子吗? 我用下面的例子读了几个网站,第一个参数是什么意思?

  1. 我知道第二个参数是callback函数,但是我们究竟把第一个参数放在什么地方呢?

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

非常感谢您的投入。

1. app.get('/', function(req, res){
这是告诉快递,以听取/和运行function,当它看到一个。

第一个参数是一个匹配的模式。 有时候像'/''/privacy'这样的字面的URL片段,你也可以进行replace,如下所示。 如果需要,您也可以匹配正则expression式,如此处所述。

Express的所有内部部分遵循function(req, res, next)模式。 一个传入的请求从中间件链(例如bodyParser )的顶部开始,一直传递下去,直到某个事件发送响应,或者直到链表和404结束。

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

variablesreplace:

 // 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'); }); }); 

next()
如果您将处理函数定义为function(req, res, next){} ,则可以调用next()来产生响应,将请求传递回中间件链。 你可能会这样做,例如一个catchall路线:

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

同样,顺序很重要,如果你希望它在这些之前运行,你必须把它放在其他路由function的上面。

我以前没有发布过json,但@ PeterLyon的解决scheme对我来说看起来不错。

TJ很烦人地把这个文件logging为app.VERB(path, [callback...], callback在express文档中app.VERB(path, [callback...], callback ,所以searchexpress文档,我不会在这里复制/粘贴,这是他不友好的说法app.getapp.postapp.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'}] });