61 # http 数据处理

简介: 61 # http 数据处理

node 中的核心模块 http 可以快速的创建一个 web 服务

const http = require("http");
const url = require("url");
// req => request 客户端的所有信息
// res => respone 可以给客户端写入数据
const server = http.createServer();
server.on("request", (req, res) => {
    // 请求的方法
    console.log(req.method); // 方法名是大写的
    console.log(req.url); // 请求路径
    // http://localhost:3001/?a=1&b=2#333
    let { pathname, query } = url.parse(req.url, true);
    console.log(pathname); // 路径
    console.log(query); // 查询参数
    // request 是一个可读流
    // 有请求体才会触发 data 事件 curl -v -X POST --data k=1 http://localhost:3001
    let arr = [];
    req.on("data", (chunk) => {
        arr.push(chunk);
        console.log("chunk---->", chunk.toString());
    });
    // 请求发送过来之后,一定会触发  end 事件
    req.on("end", () => {
        console.log("req.end---->", Buffer.concat(arr).toString());
    });
    console.log(req.httpVersion); // http 版本
    // 所有的 header 获取时都是小写
    console.log(req.headers);
    // 可写流 write end 可写流的方法
    res.statusCode = "222";
    res.statusMessage = "kaimo666";
    // 设置响应头
    res.setHeader("kaimo", "313");
    res.setHeader("Content-type", "text/html;charset=utf-8");
    res.write("hello world");
    res.end("凯小默的博客");
    // 不能下面这样写,会报错 `write after end`,它表示文件已经关闭但是又进行了写入操作
    // res.end("凯小默的博客");
    // res.write("hello world");
});
// curl -v http://localhost:3000
let port = 3000;
// listen 是一个订阅模式,等会开启后会触发对应的回调的方法
server.listen(port, () => {
    console.log("serve run", port);
});

使用 curl 请求

curl -v -X POST --data k=1 http://localhost:3001

访问 http://localhost:3001/?a=1&b=2#333

nodemon

实现文件变化后自动重启 nodemon (node monitor) 可以监视自动重启

npm install nodemon -g
nodemon "61 # http 数据处理.js"

node 中基本上所有的模块都继承于 eventEmitter,实现端口号被占用可以自动重启 Error: listen EADDRINUSE: address already in use :::3000

server.on("error", (err) => {
    console.log("err---->", err);
    // 如果端口号被占用自动重启
    if (err.code === "EADDRINUSE") {
        server.listen(++port);
    }
});

目录
相关文章
|
Web App开发
实时分析HTTP/HTTPS数据流(HTTP Analyzer)
简述 HTTP Analyzer是一款实时分析HTTP/HTTPS数据流的工具。它可以实时捕捉HTTP/HTTPS协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的URL地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个非常有用的分析、调试和诊断的开发工具。 HTTP Analyzer可以集成
2348 0
|
2月前
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
113 1
|
7月前
[网络] 4. HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
[网络] 4. HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
|
存储 缓存 网络协议
记HTTP数据格式
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
120 0
|
存储 缓存 网络协议
HTTP/2 和 HTTP1.x 比,有什么优势和特点?
HTTP/2 和 HTTP1.x 比,有什么优势和特点?
HTTP/2 和 HTTP1.x 比,有什么优势和特点?
|
分布式计算 前端开发 Java
商圈库-Http-Http工具 | 学习笔记
快速学习商圈库-Http-Http工具
商圈库-Http-Http工具 | 学习笔记
http详解3-http协议和工作流程3
http详解3-http协议和工作流程3
75 0
http详解3-http协议和工作流程3
http详解1-http协议和工作流程1
http详解1-http协议和工作流程1
78 0
http详解1-http协议和工作流程1
http详解2-http协议和工作流程2
http详解2-http协议和工作流程2
83 0
http详解2-http协议和工作流程2
|
域名解析 缓存 网络协议
一次完整的HTTP服务过程是什么
一次完整的HTTP服务过程是什么