轻松创建nodejs服务器(6):作出响应


Posted in NodeJs onDecember 18, 2014

我们接着改造服务器,让请求处理程序能够返回一些有意义的信息。

我们来看看如何实现它:

1、让请求处理程序通过onRequest函数直接返回(return())他们要展示给用户的信息。
2、让我们从让请求处理程序返回需要在浏览器中显示的信息开始。

我们需要将requestHandler.js修改为如下形式:

function start() {

  console.log("Request handler 'start' was called.");

  return "Hello Start";

}

function upload() {

  console.log("Request handler 'upload' was called.");

  return "Hello Upload";

}

exports.start = start;

exports.upload = upload;

同样的,请求路由需要将请求处理程序返回给它的信息返回给服务器。
因此,我们需要将router.js修改为如下形式:

function route(handle, pathname) {

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

  if (typeof handle[pathname] === 'function') {

 return handle[pathname]();

  } else {

 console.log("No request handler found for " + pathname);

 return "404 Not found";

  }

}

 

exports.route=route;

正如上述代码所示,当请求无法路由的时候,我们也返回了一些相关的错误信息。
最后,我们需要对我们的server.js进行重构以使得它能够将请求处理程序通过请求路由返回的内容响应给浏览器,如下所示:

var http = require("http");

var url = require("url");

function start(route, handle) {

  function onRequest(request, response) {

 var pathname = url.parse(request.url).pathname;

 console.log("Request for " + pathname + " received.");

 response.writeHead(200, {"Content-Type": "text/plain"});

 var content = route(handle, pathname);

 response.write(content);

 response.end();

  }

  http.createServer(onRequest).listen(8888);

  console.log("Server has started.");

}

exports.start=start;

如果我们运行重构后的应用:

请求http://localhost:8888/start,浏览器会输出“Hello Start”,
请求http://localhost:8888/upload会输出“Hello Upload”,
而请求http://localhost:8888/foo 会输出“404 Not found”。

这感觉不错,下一节我们要来了解一个概念:阻塞操作。

NodeJs 相关文章推荐
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 #NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 #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
You might like
Yii配置文件用法详解
2014/12/04 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python实现自动更换ip的方法
2015/05/05 Python
详解Python爬虫的基本写法
2016/01/08 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Python生成器generator用法示例
2018/08/10 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python中and和or如何使用
2020/05/28 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
如何写你的创业计划书
2014/01/07 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
面试通知单大全
2015/04/20 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
初中运动会前导词
2015/07/20 职场文书
宿舍管理制度范本
2015/08/07 职场文书