轻松创建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的url截取模块url-extract的使用实例
Nov 18 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
配置nodejs环境的方法
May 13 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 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笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php curl选项列表(超详细)
2013/07/01 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
谈一谈bootstrap响应式布局
2016/05/23 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
js+css3实现炫酷时钟
2020/08/18 Javascript
Python中apply函数的用法实例教程
2014/07/31 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Django model select的多种用法详解
2019/07/16 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
聊聊python中的循环遍历
2020/09/07 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
会计助理岗位职责
2014/02/17 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
博士论文答辩开场白
2015/06/01 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
女性励志书籍推荐
2019/08/19 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers