轻松创建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进程管理模块forever详解
Jun 01 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 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
十大“创意”战术!
2020/03/04 星际争霸
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
javascript实现微信分享
2014/12/23 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python深入06——python的内存管理详解
2016/12/07 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
Python的log日志功能及设置方法
2019/07/11 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
网络安全方面的面试题
2015/11/04 面试题
学生实习介绍信
2014/01/15 职场文书
洗发水广告词
2014/03/13 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
催款函范本大全
2015/06/24 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js