node.js 的HTTP模块

HTTP模块是什么


http模块是node官方提供的,用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就可以把一台电脑变成一台web服务器,从而对外提供web资源服务

导入HTTP模块

const http = require('http')


监听主机和端口号
通过listen方法来开启服务器,并且在某一个主机和端口上监听网络请求

listen函数有三个参数:

端口port: 可以不传, 系统会默认分配端
主机host: 通常可以传入localhost、ip地址127.0.0.1,或者ip地址0.0.0.0,默认是0.0.0.0
回调函数:服务器启动成功时的回调函数

// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
  console.log("服务器启动成功~");
});


 response对象

返回响应结果

如果我们希望给客户端响应的结果数据,可以通过两种方式:

Write方法:这种方式是直接写出数据,但是并没有关闭流;
end方法:这种方式是写出最后的数据,并且写出后会关闭流;

const http = require('http');
 
const server = http.createServer((req, res) => {
 
  // 响应数据的方式有两个:
  res.write("Hello World");
  res.write("Hello Response");
  res.end("message end");
});
 
server.listen(8000, () => {
  console.log("服务器启动🚀~")
});


返回状态码

设置状态码常见的有两种方式:

res.statusCode = 400;
res.writeHead(200);

响应头文件

返回头部信息,主要有两种方式:

res.setHeader:一次写入一个头部信息;
res.writeHead:同时写入header和status;

 

res.setHeader("Content-Type", "application/json;charset=utf8");
 
res.writeHead(200, {
  "Content-Type": "application/json;charset=utf8"
})


request对象
在向服务器发送请求时,我们会携带很多信息如:

本次请求的URL,服务器需要根据不同的URL进行不同的处理
本次请求的请求方式,比如GET、POST请求传入的参数和处理的方式是不同的
本次请求的 headers 中也会携带一些信息,比如客户端信息、接受数据的格式、支持的编码格式等
这些信息,Node会帮助我们封装到一个request的对象中,我们可以直接来处理这个request对象

const http = require('http');
 
// 创建一个web服务器
const server = http.createServer((req, res) => {
  // request对象中封装了客户端给我们服务器传递过来的所有信息
  console.log(req.url);
  console.log(req.method);
  console.log(req.headers);
 
  res.end("Hello Server");
});
 
// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
  console.log("服务器启动成功~");
});


http发送网络请求 
http.get("http://localhost:8000", (res) => {
  res.on('data', data => {
    console.log(data.toString());
    console.log(JSON.parse(data.toString()));
  })
});
发送post请求:

const req = http.request({
  method: 'POST',
  hostname: "localhost",
  port: 8000
}, (res) => {
  res.on('data', data => {
    console.log(data.toString());
    console.log(JSON.parse(data.toString()));
  })
})
 
req.on('error', err => {
  console.log(err);
})
 
req.end();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值