轻松创建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-valid)的使用方法
Nov 18 NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
图解NodeJS实现登录注册功能
Sep 16 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循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
vue实现点击展开点击收起效果
2018/04/27 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python 解压pkl文件的方法
2018/10/25 Python
python二进制文件的转译详解
2019/07/03 Python
python做接口测试的必要性
2019/11/20 Python
python 深度学习中的4种激活函数
2020/09/18 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
温馨提示标语
2014/06/26 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
bose降噪耳机音能消除人声吗
2022/04/19 数码科技
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android