美文网首页
03-Node-http模块

03-Node-http模块

作者: Am3 | 来源:发表于2019-10-28 09:28 被阅读0次

Node - http 模块

HTTP 协议是什么

HTTP 超文本传输协议,用于规范客户端浏览器和服务器之间的数据交互的格式,特点是无连接,无状态

  • 无连接:每次连接只处理一个请求,响应完成后断开连接
  • 无状态:协议对于事务处理没有记忆能力

创建服务器

// 引入http模块
const http = require('http');

// 创建WEB服务器
const app = http.createServer();

// 监听请求
// req -- request ---- 请求对象, 保存了和请求有关的全部信息
// res -- response ---- 响应对象, 通过它控制响应给浏览器信息
app.on('request', (req, res) => {
    res.end('ok')
})

app.listen(3000);
console.log('run');

根据 url 地址响应不同的内容

// 根据 url 地址响应不同的内容
const http = require('http');
const url = require('url');

const app = http.createServer();

app.on('request', (req, res) => {
    let pathname = url.parse(req.url).pathname.toLowerCase();
    if (pathname === '/index') {
        res.end('index');
    } else if (pathname === '/list') {
        res.end('list');
    } else {
        res.end('not found');
    }
});

app.listen(3000, () => {
    console.log('run');
});

动态响应静态资源

// 动态响应静态资源
const http = require('http');
const url = require('url');
const path = require('path');
const fs = require('fs');

const app = http.createServer();
app.on('request', (req, res) => {
    let pathname = url.parse(req.url).pathname.toLowerCase();
    pathname = pathname === '/' ? 'default.html' : pathname;
    let realPath = path.join(__dirname, 'public', pathname);

    fs.readFile(realPath, (err, data) => {
        if (err) {
            // 设置响应内容格式
            res.writeHead(404, {
                'content-type': 'text/plain;charset=utf8'
            });
            return res.end(err.message)
        }
        res.end(data)
    })
});

app.listen(3000, () => {
    console.log('run');
});

获取 GET 请求参数

const http = require('http');
const url = require('url');
const querystring = require('querystring');

const app = http.createServer();
app.on('request', (req, res) => {
    // 获取 dasjk=121 字符串
    let query = url.parse(req.url).query;
    // 将 dasjk=121 字符串解析成对象
    let params = querystring.parse(query);

    for (let i in params) {
        let index = "" + i;
        console.log(i, params[index]);
    }
    res.end();
});
app.listen(3000);
console.log('run');

获取 POST 请求参数

const http = require('http');
const fs = require('fs');

const app = http.createServer();
app.on('request', (req, res) => {
    let postParams = '';

    // post 参数是通过事件的方式接受的
    // 因为 post 提交的内容是未知大小
    // data 当请求参数传递时, data 事件触发
    // end 当请求参数传递完成时, end 事件触发

    req.on('data', (data) => {
        // console.log(data);
        postParams += data;

    });

    req.on('end', () => {
        console.log(postParams);
    });
});
app.listen(3000);
console.log('run');

相关文章

  • 03-Node-http模块

    Node - http 模块HTTP 协议是什么创建服务器根据 url 地址响应不同的内容动态响应静态资源获取 G...

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

  • 【时间管理100讲】精髓全在这里啦

    理论模块 精力管理。 行动管理。 学习模块。 高空模块。 反思模块。 运动模块。 阅读模块。 旅行模块。 人际关系...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • 重点知识复习(异常处理)

    1.模块 导入模块(自定义模块,第三方模块,系统其他模块)import 模块 ----> 模块.内容from 模...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • Python不同网络模块网页源代码的获取

    requests模块 或者使用 selenium模块 BeautifulSoup模块 urllib模块

网友评论

      本文标题:03-Node-http模块

      本文链接:https://www.haomeiwen.com/subject/jjyvvctx.html