轻松创建nodejs服务器(4):路由


Posted in NodeJs onDecember 18, 2014

服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤。

第一步我们需要先解析出请求URL的路径,我们引入url模块。

我们来给onRequest()函数加上一些逻辑,用来找出浏览器请求的URL路径:

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;

好了,pathname就是请求的路径,我们可以用它来区别不同请求了,这样一来我们就可以对来自/start和/upload的请求使用不同的代码来处理。

接着我们来编写路由,建立一个名为router.js的文件,代码如下:

function route(pathname) {

 console.log("About to route a request for " + pathname);

}

exports.route = route;

这段代码什么都没干,我们先把路由和服务器整合起来。

我们接着扩展服务器的start()函数,在start()中运行路由函数,并将pathname作为参数传给它。

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);

运行index.js,随便访问个路径,比如/upload,就会发现控制台输出,About to route a request for /upload.

这就意味着我们的HTTP服务器和请求路由模块已经可以相互交流了。

下一节我们将实现针对不同的URL请求给予不同的反馈。

NodeJs 相关文章推荐
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 #NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 #NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 #NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 #NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 #NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 #NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 #NodeJs
You might like
Ajax PHP分页演示
2007/01/02 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
基于jQuery实现选项卡效果
2017/01/04 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
python安装与使用redis的方法
2016/04/19 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
基于django传递数据到后端的例子
2019/08/16 Python
Pytorch之Variable的用法
2019/12/31 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
pandas针对excel处理的实现
2021/01/15 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
师德师风的心得体会
2014/09/02 职场文书
爱心捐款活动总结
2015/05/09 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
Python 中random 库的详细使用
2021/06/03 Python
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL