前端HTTP学习笔记

HTTP(hypertext transport protocol)协议也叫超文本传输协议,是一种基于 TCP/IP 的应用层通信协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。

协议主要规定了两方面的内容

  • 客户端向服务器发送数据,称之为请求报文
  • 服务器向客户端返回数据,称之为响应报文

HTTP 请求报文包括四部分

  • 请求行
  • 请求头
  • 空行
  • 请求体

HTTP 响应报文也包括四个部分

  • 响应行
  • 响应头
  • 空行
  • 响应体

使用 nodejs 创建 HTTP 服务器

//1. 引入 http 内置模块
var http = require('http');

//2. 创建服务
var server = http.createServer(function(request, response){
    response.end('hello world!!');
});

//3. 监听端口
server.listen(8000);
  • request 是对请求报文的封装对象
  • response 是对响应的封装对象

获取请求

//获取请求方法
console.log(request.method);

//获取http版本
console.log(request.httpVersion);

//获取请求路径
console.log(request.url);

//获取请求头
console.log(request.headers);

//获取请求体
request.on('data', function(chunk){})
request.on('end', function(){});
设置响应
//设置状态码
response.statusCode = 200;

//设置响应头
response.setHeader('content-type','text/html;charset-utf-8');

//设置响应体
response.write('body');

//结束
response.end();

#### 创建http服务

```javascript
// 1.引入http 模块
const http = require('http');
// 2.调用方法 创建服务对象
/* 
  request :发送报文的封装对象
  response : 响应报文的封装对象
*/
const ws = http.createServer(function(request,response){
    //  响应报文
      response.end('hello 你好');
})
// 3.监听端口 启动服务
// 127.0.0.1是回环地址 在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机,此ip地址有网无网都可以访问
// 默认端口号:80
// ctrl + c 停止服务
ws.listen(80,function(){
    console.log('服务启动,端口8000监听中');
})
获取请求信息
// 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');
// 创建服务对象 
const ws = http.createServer((request,response)=>{
    // 获取请求类型
    // console.log(request.method);
    // 获取请求的URL
    // console.log(request.url);
    // 获取请求的http协议版本
    // console.log(request.httpVersion);
    // 获取url内部各部分的信息
    // 获取路径
    console.log(url.parse(request.url).pathname);
    // 获取rul中的查询字符串

    console.log(url.parse(request.url,true).query);
    // 请求头信息
    console.log(request.headers);
    // 响应报文
    response.end('hello');
})
// 监听端口
ws.listen(8001,()=>{
     console.log('端口监听ing');
})

//获取请求体
//引入http模块
const http = require('http');
// 创建服务对象
// 引入
const ps = require('querystring');
const ws = http.createServer((request,response)=>{
   
    //绑定data事件
    let body = '';
    request.on('data',chunk=>{
        body += chunk.toString();
    })
    // 3.绑定end事件
    request.on('end',()=>{
        console.log(body);
        console.log( ps.parse(body));
        response.end('body server1');
    })
})
// 端口监听
ws.listen(80,()=>{

});
获取响应信息
/ 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');
// 引入fs 模块
const fs = require('fs');
const ws = http.createServer((request,response)=>{
    //  获取请求的URl中的查询路径
    let pathname = url.parse(request.url,true).pathname;
    // 网站的根目录 服务器根据请求路径找到指定文件夹下面的文件,那么这个文件夹就是该网站的跟目录
    let directory = __dirname +'public';
    // let directory = 'D:/';
    let pathName = directory + pathname;
    fs.readFile(pathName,(err,data)=>{
        if(err) {
            response.end('404 Not Found');
        } else {
            response.end(data);
        }
    })
    /* let data = fs.readFileSync(pathName);
    response.end(data); */
    /* if(pathname === '/index.html'){
        let data = fs.readFileSync(pathName);
        // 返回响应体
        response.end(data);
    }else if(pathname === '/css/app.css') {
        let data = fs.readFileSync(__dirname + '/public/css/app.css');
        // 返回响应体
        response.end(data);
    }else if(pathname === '/css/font.css') {
        let data = fs.readFileSync(__dirname + '/public/css/font.css');
        // 返回响应体
        response.end(data);
    }else if(pathname === '/js/index.js') {
        let data = fs.readFileSync(__dirname + '/public/js/index.js');
        // 返回响应体
        response.end(data);
    } */

    /* else {
        response.end('404 Not Found');
    } */
    
}) 
ws.listen(80);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值