当前位置: 首页 > 后端技术 > Node.js

Node.js路由

时间:2023-04-03 19:25:17 Node.js

Node.js路由在我们平时的工作中,都会涉及到后台开发。路由基本上是我们首先要搭建的东西,路由还是很重要的。那么,什么是路由?让我们举一个简单的例子。一个酒店前台来了十位客人,前台会安排十位客人入住,每位客人到酒店后,去哪个房间都是通过前台安排的。(别喷我)一个域名下,会有很多可访问的地址,这就是路由。对于我们来说,我们需要向路由提供请求的URL和其他需要的GET和POST参数,然后路由需要根据这些数据来决定执行哪些代码。/因此,我们必须查看HTTP请求并从中提取我们需要的URL和GET/POST参数。我们需要的数据将包含在请求对象中,该对象作为onRequest()回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的Node.js模块,分别是url和querystring模块。url.parse(string).查询|url.parse(字符串).路径名|||||------------------------http://localhost:8888/start?foo=bar&hello=world--------||||querystring.parse(queryString)[“foo”]||querystring.parse(queryString)["hello"]也可以使用querystring模块解析post请求体中的参数,下面会有代码演示。现在我们写一段代码,找出浏览器请求的URL路径。我们还写了如何使用节点启动服务。我们新建一个server.js代码如下//代码中的route()方法是第二个创建的router.js方法。我们这里使用consthttp=require('http')consturl=require('url')functionstart(route){functiononRequest(request,response){letpathName=url.parse(request.url).pathname//通过url获取当前访问路径console.log('Requestfor'+pathName+'received.')route(pathName,response)}http.createServer(onRequest).listen(8888)console.log('Serverhasstarted')}exports.start=start然后创建router.js//传给pathname执行不同的操作,如果是根目录,打印helloworld//如果是/indexprintpathname:/index//如果是isOtherprint404functionroute(pathname,response){console.log('Abouttoroutearequestfor'+pathname)response.writeHead(200,{'Content-Type':'text/plain'})if(pathname=='/'){response.write('HelloWorld')response.end()}elseif(pathname=='/index'){response.write('pathname:/index')response.end()}else{response.write('404')response.end()}}exports.route=route真实环境肯定不会这样写,主要是为了理解路由工作原理接下来,我们创建index.js,将其注入到我们编写的两个模块中。constserver=require('./server')constrouter=require('./router')server.start(router.route)调用server的start方法下,传入路由器的route方法。整体逻辑就出来了。通过server.js创建http服务,通过node内置模块url获取当前访问路径,通过router.js对不同的访问路径进行不同的代码操作。最后我们启动命令行,输入nodeindex.js然后请求一个url,我们会看到应用程序输出了相应的信息,说明我们已经在使用HTTP服务器的路由模块了。并将请求路径传递给路由器,然后由路由器执行下一次配对操作。