Node.js(四)

Node.js(四)-http协议


本篇博文简单介绍了http协议以及http模块的简单使用。


前言

http协议是浏览器和web服务器之间的通信协议。


一、http协议

1.通用头信息

Request URL:要请求的资源
Request Method:请求的方法 get/post/put/delete…
Status Code:响应的状态码

1**:正在响应,还没有结束
2**:成功的响应
3**:响应的重定向
4**:客户端请求错误
5**:服务器错误

2.响应头信息

Location:要跳转的URL,通常会结合状态码3**使用
Content-Type:响应的内容类型 text/html/;charset=utf-8

3.请求头信息

每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息:

Accept:浏览器能够处理的内容类型
Accept-Charset:浏览器能够显示的字符集
Accept-Encoding:浏览器能够处理的压缩编码
Accept-Language:浏览器当前设置的语言
Connection:浏览器与服务器之间连接的类型
Cookie:当前页面设置的任何Cookie
Host:发出请求的页面所在的域
Referer:发出请求的页面的URL
User-Agent:浏览器的用户代理字符串

4.请求主体

只有传递数据的时候下会出现

二、NodeJs–http模块

http模块用来创建服务器,内部编写服务器端的代码,处理前端发送的请求,并且给出响应。

1.使用http模块创建web服务器

格式:

const http=require('http');//引入http模块
const app=http.createServer(); //创建WEB服务器
app.listen(8080); //设置端口号
//通过事件来接收请求
app.on('request', (req,res)=>{
  req  //请求的对象
  req.url   //获取请求的URL
  req.method  //获取请求的方法  
  res  //响应的对象
  res.write()  //设置响应的内容
  res.writeHead()   //设置响应的状态码和头信息
  res.end()  //结束并发送响应
})

2.示例:

const http=require('http');
const app=http.createSever();//创建web服务器
app.listen(8081);//设置端口
//通过事件接受请求
//事件,一旦请求服务器自动跳转callback
app.on('request',(req,res)=>{//req请求的对象、res响应的对象
    console.log('有一个人要买煎饼');//后台输出,测试
    res.write('Hell NodeJs!');//设置响应的内容
    res.end();//结束并发送
});

重定向跳转

res.writeHead(302,{//设置响应的状态码和头信息
        Location:'http://www.baidu.com/'
    });

设置404

res.writeHead(404,{//设置响应的状态码和头信息
    });
    res.write('404! NOT FIND!');//设置响应的内容
    res.end();//结束并发送

练习

可以通过js对路由跳转以及响应信息进行设置。

练习:
创建WEB服务器,设置端口;根据请求作出对应响应
/login 响应 <h2>这是登录的网页</h2>
/index 响应 1.html文件,先同步读取文件数据,将数据作为响应的内容
/study 跳转到 http://www.tmooc.cn
其它 响应 404 Not Found

代码如下:

const http = require('http');
const file = require('fs');
const app = http.createServer();
app.listen(8082);
app.on('request', (req, res) => {
 let str = req.url;  //获取请求的端口信息
    //Location: 'http://localhost:8082/login',
 if (str === '/login') {
     res.writeHead(200, {//设置响应的状态码和头信息
         'Content-Type': 'text/html;charset=utf-8 '
     });
     res.write('<h2>这是登录的网页</h2>');
     console.log(str);//测试
     res.end()
 } else if (str === '/index') {    //Location: 'http://localhost:8082/index',
     let content = file.readFileSync('./index.html').toString();
     res.writeHead(200, {//设置响应的状态码和头信息
         'Content-Type': 'text/html'
     });
     console.log(str);//测试
     res.write(content);
     res.end();
 } else if (str === '/study') {
     res.writeHead(302, {//设置响应的状态码和头信息
         Location: ' http://www.baidu.com',
         'Content-Type': 'text/html;charset=utf-8 '
     });
     console.log(str);//测试
     res.end();
 }
 else {
     res.writeHead(404, {
         'Content-Type': 'text/html;charset=utf-8 '
     });
     res.write('<h2>404 -NOT FIND</h2>');
     res.end();
 }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值