请求命中节点js服务器时的执行流程

时间:2018-05-17 12:11:07

标签: javascript node.js express

我是Nodejs的新手,在这里我在app.js中有一段代码:

var config = require('./config')
    , express = require('express')
    , db = require('./app/lib/db')
    , utils = require('./app/lib/utils')(config, db)    
var app = express() 
    http = require('http').createServer(app)
       require('./config/express')(app, config)
        require('./config/routes')(app, utils, model_list)
        http.listen(config.port, function () {
            console.log("API running at http://" + config.hostname)
        })

路由器api列表在文件config/routes中设置,例如:

app.get('/api/' + name + '/:limit([0-9]+)/:page([0-9]+)', ctrls[name].list); // get list with page
app.get('/api/' + name, ctrls[name].list); // get list with default page = 1
app.post('/api/' + name + '/search', ctrls[name].search); // search
app.get('/api/' + name + '/:id([0-9a-f]+)', ctrls[name].get); // get by id

创建服务器并开始侦听配置端口后,新请求到达服务器时的执行流程是什么?服务器如何在app.js中捕获请求,然后移至routes.js以将其路由到函数来处理它?<​​/ p>

2 个答案:

答案 0 :(得分:0)

它不会移动到routes.js ... routes.js中需要app.js并且它将路由应用于作为快速服务器的app对象。在服务器开始侦听端口之前完成一次。

请求在接收请求时如何表达路由完全在内部完成。基本上它会检查请求方法(GET,POST等),然后检查请求的URI并尝试匹配路由,如果路由匹配,则执行该功能。

答案 1 :(得分:0)

你应该检查nodejs中http的解剖结构。 https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/