轻松创建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中Buffer模块详解
Jan 07 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
浅析javascript的return语句
2015/12/15 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
简单的Python的curses库使用教程
2015/04/11 Python
python学习必备知识汇总
2017/09/08 Python
python对Excel的读取的示例代码
2020/02/14 Python
python线性插值解析
2020/07/05 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
船舶专业个人求职信范文
2014/01/02 职场文书
实用的简历自我评价
2014/03/06 职场文书
干部鉴定材料
2014/05/18 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
大学军训心得体会800字
2016/01/11 职场文书
女性励志书籍推荐
2019/08/19 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技