轻松创建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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
配置nodejs环境的方法
May 13 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php实现的短网址算法分享
2014/06/20 PHP
php取得字符串首字母的方法
2015/03/25 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python实现一个简单的验证码程序
2017/11/03 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Python实现数值积分方式
2019/11/20 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Python实现GIF图倒放
2020/07/16 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
建筑工程技术应届生自荐信
2013/09/27 职场文书
公司庆典邀请函范文
2014/01/13 职场文书