轻松创建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实现阿里大鱼短信通知发送
Jan 17 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
PHP4之真OO
2006/10/09 PHP
JS实现php的伪分页
2008/05/25 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
javascript hashtable实现代码
2009/10/13 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jquery实现对联广告的方法
2015/02/05 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
JS中的BOM应用
2018/02/02 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python中turtle库的简单使用教程
2020/11/11 Python
安全员岗位职责
2013/11/11 职场文书
总裁秘书岗位职责
2013/12/04 职场文书
大专生自我评价
2014/01/28 职场文书
公司合作意向书
2014/04/01 职场文书
承诺书样本
2014/08/30 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
先进集体申报材料
2014/12/25 职场文书
课外活动总结
2015/02/04 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
html form表单基础入门案例讲解
2021/07/15 HTML / CSS