Express框架app.post和app.get
我对expression式框架相当陌生。 我无法在express API参考中findapplication.post()方法的文档。 有人可以提供一些我可以放在函数中的所有可能参数的例子吗? 我用下面的例子读了几个网站,第一个参数是什么意思?
-
我知道第二个参数是callback函数,但是我们究竟把第一个参数放在什么地方呢?
app.post('/', function(req, res){
-
另外,假设我们希望用户以特定的格式([{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.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'}] });