轻松创建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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 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
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
php use和include区别总结
2019/10/13 PHP
javascript下function声明一些小结
2007/12/28 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
Python实现栈的方法
2015/05/26 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
外包公司软件测试工程师
2014/11/01 面试题
构造方法和其他方法的区别
2016/04/26 面试题
产品销售计划书
2014/05/04 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2014财务年终工作总结
2014/12/08 职场文书
2015年党员自评材料
2014/12/17 职场文书
导游词开场白
2015/01/31 职场文书
档案管理员岗位职责
2015/02/12 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers