03-Node-http模块

2019-10-28  本文已影响0人  Am3

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');
上一篇下一篇

猜你喜欢

热点阅读