轻松创建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中自定义事件实例
Jun 20 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
浅谈Node的内存泄露问题
May 06 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
PHP的FTP学习(二)
2006/10/09 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
Maps Javascript
2007/01/22 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
请说出你所知道的线程同步的方法
2013/04/19 面试题
施工安全生产承诺书
2014/05/23 职场文书
团队激励口号
2014/06/06 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
六查六看自查报告
2014/10/14 职场文书
欠条格式范本
2015/07/03 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript