为什么要使用路由
我们使用Node.js的http服务的时候,需要针对不能的Url和不同的方法(Get,Post,等)去做不同的对应,所以我们在接受到请求的时候需要利用路由功能来扩展我们的程序。
http服务
首先我们利用http,来构建我们自己的服务,创建server.js,代码如下:
var http = require("http");
var url = require("url");
function start() {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
start();
此时我们已经创建了一个http服务
微信截图_20200224110919.png
路由
那么要如何利用路由来去区分Url和方法呢?建立一个名为 router.js 的文件,添加以下内容
function route(pathname) {
console.log("About to route a request for " + pathname);
}
exports.route = route;
我们创建了一个路由,输出了一个log,除此之外什么都没有操作。接着,我们去完善我们的服务。将路由函数作为参数传递过去,server.js 文件代码如下
var http = require("http");
var url = require("url");
function start(route) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
route(pathname);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
创建 index.js,使得路由函数可以被注入到服务器中
var server = require("./server");
var router = require("./router");
server.start(router.route);
输出如下
Server has started.
Request for / received.
About to route a request for /
Request for /favicon.ico received.
About to route a request for /favicon.ico
网友评论