通过Node.js创建一个web服务器,要写的代码可能不是最少的,但是一定是最容易理解的。

用6行代码创建的web服务器

当在浏览器中访问http://127.0.0.1:1337会看到自定义的字样

Node.js

1 var http=require('http');//require引用内置模块http
2
3 http.createServer(function(req,res){
4     res.writeHead(200,{'Content-Type':'text/path'});//设置头信息
5     res.end("Welcome to perfect* the blog park!!!\n");//输出内容
6
7 }).listen(1337,'127.0.0.1');//绑定IP和端口
8
9 console.log('server running at http://127.0.0.1:1337');//控制台输出显示

在第三行中的createServer方法支持一个callback的回调函数,这个函数是web服务器主要的处理函数,程序员在这里做各种常见业务的处理和控制,在本例子中只是响应一个文档头Content-Type,并输出指定的字样,在第7行是链式的写法,通过调用一个一个listen方法,将处理的代码绑定本机IP的1337端口上。在网络上的默认的端口是80,最后在控制台上输出一段提示信息

现在web服务已经建立,只需要关闭CMD窗口或是直接按Ctrl+c快捷键即可停止web服务器

让web服务器响应和处理不同路径

观察上面的例子我们可以发现构建的Web服务器无论该网址后面的路径和参数是什么,只要IP和端口是正确的,它始终只会做出一个反应---显示自定义的字样;由此这样的服务器有什么用呢?就没有一点使用价值。一个正常的网站,即使是一个纯静态的网站,都会有不同的路径。因此现在就实现比如首页显示自定义的字样,其它的页面就显示请求的网址。

使用node server_01启动如下例子,然后再浏览器中输入localhost:9527和localhost:9527/other  可以看到期望的效果:

 1  var http = require('http'); //require引用内置模块http
 2  var url = require('url'); //require引用内置模块url
 3  http.createServer(function (req, res) {
 4     res.writeHead(200, {'Content-Type': 'text/plain'});    //设置头信息
 5       var pathname = url.parse(req.url).pathname;    //把请求网址交给url对象处理
 6       var bodyStr ="";    //定义一个变量用来存储要输出的内容
 7       if(pathname==="/"){ //如果是首页
 8           bodyStr = 'Welcome to perfect* the blog park!!!\n';
 9       }else{
10           bodyStr = req.url;     //如果是其他路径
11       }
12       res.end(bodyStr);        //输出内容
13     }).listen(9527, '127.0.0.1');    //绑定IP和端口
14   console.log('Server running at http://127.0.0.1:9527/');//控制台输出提示

再改变一下用户的需求,首先显示不变,增加一个/about关于页面,显示一些联系信息,其它的页面就提示404 not found.随着请求的路径的增长,用if判断的方式对代码阻止,很不友好,下面使用对象就行修改代码:

 1 var http=require('http');//require引用内置模块http
 2 var url=require('url');//require引用内置模块url
 3
 4 var webPath={//许可的路径
 5
 6     "/":"Welcome to perfect* the blog park!!!\n",
 7     "/about":"ID:01\nname:perfect*",
 8 }
 9
10 http.createServer(function(req,res){
11
12   res.writeHead(200,{'Content-Type':'text/plain'});//设置头信息
13     var pathname=url.parse(req.url).pathname;//把请求的网址交给url对象进行处理
14     var bodyStr=webPath[pathname]||"Not found!\n "+req.url+"was not found this server";//如果访问路径没有被webPath指定就是Notfound
15
16
17
18
19         res.end(bodyStr);//输出内容
20
21 }).listen(1339,'127.0.0.1');//绑定IP和端口
22
23 console.log('server running at http://127.0.0.1:1339');//控制台输出显示

转载于:https://www.cnblogs.com/jiguiyan/p/10787792.html

Node.js建立服务、路径处理与响应相关推荐

  1. Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解

    Linux使用Node.js建立访问静态网页的服务实例详解 一.安装node.js运行所需要的环境,: 二.创建node目录(/node/www),并在目录下创建node.js服务文件server.j ...

  2. 高质量 Node.js 微服务的编写和部署

    前几天在微信群做的一次分享,整理出来分享给大家,相关代码请戳 https://github.com/Carrotzpc/docker_web_app 微服务架构是一种构造应用程序的替代性方法.应用程序 ...

  3. 个推Node.js 微服务实践:基于容器的一站式命令行工具链

    2019独角兽企业重金招聘Python工程师标准>>> 作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的 ...

  4. Node.js 微服务实践:基于容器的一站式命令行工具链

    作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 每次新建项目都需要安装一次依赖,这些依赖之间基本 ...

  5. Node.js 微服务实践:基于容器的一站式命令行工具链...

    作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 每次新建项目都需要安装一次依赖,这些依赖之间基本 ...

  6. node.js 建立live-server

    node.js安装 安装nvm nvm是一个可以让你在同一台机器上安装和切换不同版本node的工具 笔者为Windows系统,github上的nvm又下不了,所以找了一个度盘地址 链接:https:/ ...

  7. [Node.js] 模块化 -- path路径模块

    路径问题 nodejs中相对路径,相对的是运行这个node文件的小黑框的路径而言的. 相关变量 __dirname 获取的是当前这个文件所在的这个文件夹的绝对路径 __filename 拿到的是当前这 ...

  8. Node.js微服务 2 :基于Seneca和PM2构建Node.js微服务

    2.1 选择Node.js的理由 如今,Node.js已经成为国际上许多科技公司的首选方案.特别的,对于在服务器端需要非阻塞特性(例如Web Sockets)的场景,Node.js俨然成了最好的选择. ...

  9. 入门级Node.js express服务端开发_Android签到APP

    2019独角兽企业重金招聘Python工程师标准>>> 一.APP原型 参考另一篇博客:https://my.oschina.net/u/2480757/blog/788578 二. ...

最新文章

  1. Training—Capturing Photos
  2. Win7下U盘安装Ubuntu14.04双系统步骤详解 | 浏览:42144 | 更新:2014-05-24 18:09 | 标
  3. java实现123n_用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点...
  4. 四条命令搞定mysql主从
  5. 前端学习(975):bootstrap轮播图
  6. 计算机二级考试C++考试大纲
  7. 实验二:SET-UID程序漏洞实验
  8. Ubuntu下配置使用maven
  9. 理解 Symbol.toStringTag 用法
  10. python——redis
  11. 【重点】LeetCode 143. Reorder List
  12. Python 设计模式-- 命令模式
  13. @ab测试工具使用详解
  14. 脚本文件BAT入门(1)
  15. 语音识别(ASR) 阿里云
  16. html从谷歌浏览器跳转到IE,IE浏览器和谷歌浏览器相互跳转
  17. 可位寻址与不可位寻址
  18. r语言做绘制精美pcoa图_三分钟绘制一张优美的PCoA图 | 云平台
  19. SpringMVC——MVC思想、前端控制器、SpringMVC概述、编写第一个SpringMVC程序
  20. 单单训练营 第四期 第一课 做自己的CEO

热门文章

  1. python【力扣LeetCode算法题库】151- 翻转字符串里的单词
  2. java中文乱码decode_Java中文乱码解决
  3. python ansible_Ansible Python API | linux系统运维
  4. iar代码优化影响运行速度吗_IAR中优化等级对Kinetis FGPIO执行速度的影响
  5. Android 请求PHP接口, 返回json, 开头有问号, 解决方案
  6. 网络营销外包下字节跳动如此优秀私有市场估值远超拼多多与京东
  7. 浅析企业网站应该如何选择适合自己的服务器?
  8. python画蝴蝶_python画蝴蝶曲线图的实例
  9. Android中Activity的四种启动模式
  10. python扫描proxy并获取可用代理ip列表