轻松创建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观察者模式
Oct 13 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP多例模式介绍
2013/06/24 PHP
8个PHP数组面试题
2015/06/23 PHP
php截取视频指定帧为图片
2016/05/16 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
js prototype截取字符串函数
2010/04/01 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
python网络编程实例简析
2014/09/26 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python构建自定义回调函数详解
2017/06/20 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
Python多进程编程常用方法解析
2020/03/26 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
python中类与对象之间的关系详解
2020/12/16 Python
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
中标通知书
2015/04/17 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
小学体育课教学反思
2016/02/16 职场文书
高二化学教学反思
2016/02/22 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android