轻松创建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 sublime text 3安装与配置
Jun 19 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 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伪静态页面函数附使用方法
2008/06/20 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
VueJS全面解析
2016/11/10 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python实现在sqlite动态创建表的方法
2015/05/08 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python爬虫中多线程的使用详解
2019/09/23 Python
python 实现视频 图像帧提取
2019/12/10 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
python with语句的原理与用法详解
2020/03/30 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
大学毕业自我评价
2014/02/02 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
教师党员自我评价2015
2015/03/04 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
图书借阅制度范本
2015/08/06 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis