HTTP模块介绍:

nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。

http.Server是一个基于事件的http服务器

http.request是http客户端工具,用于向http服务器发起请求

如fs模块一样,需要先引用http模块:

var http = require('http'); //读取内置http模块,这个模块提供了http服务

创建HTTP服务器:

res表示response服务器返回给客户端的响应,下面语法表示设置响应头部信息。

1 res.setHeader("Content-type", "text/html;charset=UTF8");
2
3 res.writeHead(200, {'Content-Type':'text/html;charset=UTF8'});

以上方法更倾向于使用writeHead,因为可以设置状态码,还能设置多个响应头信息。

 1 var http = require("http");
 2
 3     //req表示request用户的请求
 4     //res表示response服务器的响应
 5 var server = http.createServer(function(req, res) {
 6     ////设置响应报文头,让类型变为html并且是utf8编码
 7     //    res.setHeader("content-type","text/html;charset=UTF-8");//第一种方式  为了HTML显示防止乱码插入响应头
 8     //一定要注意writeHeader是驼峰写法
 9     res.writeHeader(200, {"Content-Type": "text/html;charset=UTF-8"}); //第二种方式  当服务器访问200成功是,响应头返回并显示HTML页面防止乱码
10     res.write('<h1>node.js学习 <h1>');
11     res.write('<h3>第一种方式  为了HTML显示防止乱码插入响应头</h3>');
12     res.write('<h3>第二种方式  当服务器访问200成功是,响应头返回并显示HTML页面防止乱码</h3>');
13     //页面上输出内容,输出内容用write,end表示结束!
14     res.end('<h1>一定要注意writeHeader是驼峰写法</h1>');
15 });
16
17 //监听8000端口,默认是80端口,但80被Apache占用了,所以改用8000
18 server.listen(8000, function(err) {
19
20     if(err) {
21         console.log("服务器开启失败!");
22         return;
23     }
24     console.log("服务器启动成功,请到127.0.0.100:8000端口中打开查看")
25 });

打印结果:

在浏览器中,看不到后端node的源代码:

原因是Nodejs执行在服务器端,语句在服务器被执行、编译,此时发给浏览器的就是执行之后、编译后的纯文本了,不含有计算的。

req(request)的方法:直接console.log()使用就可以。

1 req.url                            //表示访问路径
2
3 req.headers                        //获取请求头信息
4
5 req.headers["user-agent"]          //浏览器信息
6
7 req.headers["host"]                //域名信息
8
9 req.connection.remoteAddress       //表示访问者的ip地址

node.js是单线程的通过下面代码可以证明:

我们会发现不是每个访问者来了都有新的a值,而是全班共用一个a,每个人访问的时候看到的都是已经被刷过的a值。

1 var http = require("http");
2 var a = 0;
3 http.createServer(function(req,res){
4     a++;
5     res.end(a.toString())
6 }).listen(3000);

异步I/O特性获取访问IP 及req.connection.remoteAddress

 1 //创建fs模块
 2 var fs=require("fs");
 3 //创建http模块
 4 var http = require("http");
 5 var server = http.createServer(function(req,res){
 6      //用户访问的时候执行的语句。
 7     console.log(req.connection.remoteAddress + "进门了!我招呼他去!");
 8     res.setHeader("Content-Type","text/html;charset=UTF8");
 9
10     console.log(req.connection.remoteAddress + "用户开始读1号文件");
11      fs.readFile("./aaa/01.txt", "utf8", function(err,data1){
12          console.log(req.connection.remoteAddress + "用户读完毕1号文件,开始读2号文件");
13          fs.readFile("./aaa/02.txt", "utf8", function(err,data2){
14              console.log(req.connection.remoteAddress+"用户读完2号文件,开始发送response");
15
16              res.write("<h1>" + data1 +"</h1>");
17              res.write("<h1>" + data2 +"</h1>");
18              res.end();
19          });
20      });
21 });
22 server.listen(3000)

执行如下:

转载于:https://www.cnblogs.com/xuyx/p/10834637.html

Node.js之HTTP模块学习相关推荐

  1. node.js中模块_在Node.js中需要模块:您需要知道的一切

    node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...

  2. 详细记录基于vue+nodejs+mongodb构建的商城学习(四)基于项目的node.js开发后端的学习与梳理总结...

    前置: 本系列文章是一个本人边学习边梳理的学习笔记,俗话说好脑袋不如烂笔头,再好的记忆力时间长了也会有细节忘记,本项目选择的前端框架是vue,后端开发使用是node.js,数据库使用的是mongodb ...

  3. 浅析 Node.js 的 vm 模块以及运行不信任代码

    为什么80%的码农都做不了架构师?>>>    在一些系统中,我们希望给用户提供插入自定义逻辑的能力,除了 RPC 和 REST 之外,运行客户提供的代码也是比较常用的方法,好处是可 ...

  4. Node.js 初识 fs 模块

    fs 模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等 Unix 文件系统操作.与其他模块不同的是,fs 模块中所有的操作都提供了 同步 和 异步 两个版本,比如读取文件内 ...

  5. 开场 Live,分享点干货——「深入了解 Node.js 包与模块机制」

    先放上 Live 地址: www.zhihu.com/lives/84274- 本次 Live 将深入剖析 Node.js 包与模块机制,包括且不限于解析 Node.js 源码.社区规范等.本人认为这 ...

  6. php node 目录,node.js基于fs模块对系统文件及目录进行读写操作的方法详解

    本文主要介绍了node.js基于fs模块对系统文件及目录进行读写操作的方法,结合实例形式分析了nodejs使用fs模块针对文件与目录的读写.创建.删除等相关操作技巧,需要的朋友可以参考下. 如果要用这 ...

  7. Node.js web应用模块之forever

    javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通 ...

  8. Node.js web应用模块之Supervisor

    在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也 总是要不断地重复这几个很烦人的操作.这是因为Node.js ...

  9. node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...

最新文章

  1. mysql数据库是一个软件呐_15款好用的mysql管理软件
  2. 华南赛区线上比赛安排
  3. LIME:一种解释机器学习模型的方法
  4. 高并发编程-自定义简易的线程池(1),体会原理
  5. oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
  6. 浅谈OpenCL之Platform API(1)
  7. linux内核中获取虚拟地址api,Linux内核-系统调用
  8. java金额格式化 .00_Java中金额的格式化###,###.00
  9. 利用iMazing备份功能替换游戏存档
  10. mysql servlet登录验证_使用Servlet和jdbc创建用户登录验证
  11. 图片标注工具Labelme的安装及使用方法
  12. 基于Spark的GBDT + LR模型实现
  13. 虚拟打印机 服务器,cimfax64位系统虚拟打印机安装.pdf
  14. 安利一波软件、插件及其他
  15. oracle的date_add,SQL Server 中add函数到 oracle date add的操作
  16. 如何用 Python 自动发送微博?
  17. 对视频的分辨率大小进行裁剪
  18. HRBUST 1162 魔女【DP】
  19. 周志华《机器学习》习题6.2
  20. WCF分布式开发详解

热门文章

  1. 工程师软技能4:找出你的短板
  2. 关于laravel模板中生成URL的几种模式总结
  3. jks与keystore的区别
  4. python--OS模块,文件系统
  5. 用shiro框架实现注册登陆,让你快速理解shiro用法
  6. Spring Cloud Eureka 配置原理详解
  7. qcow2磁盘格式分析
  8. Laravel源码学习文章汇总
  9. Laravel核心解读--Database(一)基础介绍
  10. 关于Mybatis的几个问题