前言
在NodeJs中,路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码,
通俗点说:通过 NodeJs路由可以拿到 地址栏 url 和 http 模块 get post 参数
, 通过一个实例来实践一下
创建一个 router.js
实现一个简单的服务,内容如下:
var http = require("http"); // 引入http 模块,后续会讲到 http 模块
var url = require("url"); // node 自由模块
// req : request , res: response
http.createServer(function (req, res) {
// 写入请求头
res.writeHead(200, {
"Content-Type": "text/plain"
})
// 页面写入内容
res.write("Hello Router");
//结束
res.end();
// 打印路由 req
console.log(url.parse(req.url).pathname)
}).listen("1234", "127.0.0.1");
我们需要的所有数据参数都会包含在 request 对象中,也就是我上边简写的 req
, 那么我还需要一些额外的模块, url模块
解析地址栏url ,querystring模块
解析get请求,这里我们用一个 url
模块 来实践一下NodeJs路由。
如上代码准备完毕后,同样运行 node router.js
,然后打开对应我们监听的IP or 端口,也就是 127.0.0.1:1234
,页面毋庸置疑会显示 Hello Router
,然后我们修改 url 分别为
127:0.0.1:1234/home
127:0.0.1:1234/about
打印
PS C:\HiSen\myWorkDemo\node_demo> node router.js
/ // url 解析为 /
/favicon.ico
/home // url 解析为 /home
/favicon.ico
/about // url 解析为 /about
/favicon.ico
结果一目了然 , 我们可以通过 url 模块的 url.parse(req.url).pathname
来监听到页面路由的变化,从而做不同的事情。
Get - Post
路由通过上边的实例已经有了个简单的认识,那么 GET POST
其实也是相同的逻辑,我们的请求参数都可以通过 request
对象拿到;
Get
通过 request.query.xxxPost
通过 request.body.xxx
Post
获取参数,原生 NodeJs
是可以的,根据我以往的经验,使用 express
框架好像略有一点点小插曲,并不能直接获取到;解决方法还是挺多的,例如:
bodyParser
插件,具体怎么样,请大家持续关注,我后续的 HTTP 模块会讲解清楚。