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);
    }
});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux虚拟机中安装MySQL5.6.34

目录 第一章、xshell工具和xftp的使用1.1)xshell下载与安装1.2)xshell连接1.3)xftp下载安装和连接 第二章、安装MySQL5.6.34(不同版本安装方式不同)2.1)关闭防火墙,传输MySQL压缩包到Linux虚拟机2.2&#x…

【Docker 学习笔记】Docker架构及三要素

文章目录 一、Docker 简介二、Docker 架构1. Docker 客户端和服务器2. Docker 架构图3. Docker 运行流程图 三、Docker 三要素1. 镜像(Image)2. 容器(Container)3. 仓库(Repository) 一、Docker 简介 Dock…

解决el-table打印时数据重复显示

1.表格数据比较多加了横向滚动和竖向滚动,导致打印出问题 主要原因是fixed导致,但是又必须得滚动和打印 方法如下: 1. 2. is_fixed: true,//data中定义初始值 3.打印时设置为false,记得要改回true if (key 2) { this.is_fixed false //打…

vue 修改端口号

在根目录创建一个vue.config.js文件夹 module.exports {lintOnSave: false,devServer: {port: 3000,open: true} }运行后

HCIP--云计算题库 V5.0版本

在国家政策的支持下,我国云计算应用市场发展明显加快,越来越多的企业开始介入云产业,出现了大量的应用解决方案,云应用的成功案例逐渐丰富,用户了解和认可程度不断提高,云计算产业发展迎来了“黄金机遇期”…

ABB机器人10106“保养时间到”故障报警解决办法

ABB机器人10106“保养时间到”故障报警解决办法 如下图所示,机器人示教器提示:10106 到保养时间,应检修机器人。 如下图所示,点击右下方的“确认”, 如下图所示,打开菜单,点击进入程序编辑器, 如下图所示,点击“调试”—,首先点击PP移至Main,然后再调用例行程…

【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

elementUI 实现动态表单数据校验

转载http://t.csdn.cn/XuTa2 1、探讨需求 首先我们需要探讨一下需求: 表单中的部分el-form-item 的label都是从接口拿到的,需要遍历进行动态渲染。 需要给每个el-form-item加上校验至少是必填校验 有的el-form-item不需要校验,也不是从接口…

python包

python包 JSON import jsondata [{"name": 张三, age: 14},{"name": 李四, age: 16},{"name": 王五, age: 18}, ] json_str json.dumps(data, ensure_asciiFalse) # dumps 将数据转换成字符串,ensure_asciiFalse 不使用ascll码转…

蓝桥杯2018省赛全球变暖dfs

全球变暖 问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序 问题描述 格式输入 格式输出 输出一个整数 样例输入 样例输出 1 评测用例规模与约定 最大运行时间:1s最大运行内存: 256M 解析 采用dfs的方式进行搜索,首先输入地…

独立成分分析ICA理论推导

Independent Component Analysis

浅谈Vue3 computed计算属性

什么是computed 官方给出的解释&#xff1a;接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。它也可以接受一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象 // 只读 function computed<T>(ge…

根据端口号查找服务位置

已知服务的IP和端口&#xff0c;查找该服务所在位置 1、打开命令提示符&#xff08;CMD&#xff09; WINR快捷键打开运行对话框&#xff0c;输入CMD&#xff0c;打开命令行。 2、找到对应的PID或程序名称 输入netstat -ano|findstr 端口号&#xff0c;找到对应的PID&#…

【VTK】读取一个 STL 文件,并使用 Qt 显示出来,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 A.hA.cppRef. 直接先把效果放出来&#xff0c;有需要就往下看。 A.h // A.h #pragma once#include <QtWidgets/QMainWindow> #include "…

计算机视觉实验:图像处理综合-路沿检测

目录 实验步骤与过程 1. 路沿检测方法设计 2. 路沿检测方法实现 2.1 视频图像提取 2.2 图像预处理 2.3 兴趣区域提取 2.4 边缘检测 ​​​​​​​2.5 Hough变换 ​​​​​​​2.6 线条过滤与图像输出 3. 路沿检测结果展示 4. 其他路沿检测方法 实验结论或体会 实…

GridFsTemplate实现文件管理

目录 需求分析解决方案实现步骤添加maven`spring-boot-starter-data-mongodb`配置文件`GridFsTemplate`实现临时文件和正式文件存储桶分离创建`GridFsTemplateUtil`工具类管理文件的上传、下载和删除创建`GridFsTemplateFileController`控制器暴露上传、下载和删除接口总结需求…

数据结构--算法的时间复杂度和空间复杂度

文章目录 算法效率时间复杂度时间复杂度的概念大O的渐进表示法计算实例 时间复杂度实例 常见复杂度对比例题 算法效率 算法效率是指算法在计算机上运行时所消耗的时间和资源。这是衡量算法执行速度和资源利用情况的重要指标。 例子&#xff1a; long long Fib(int N) {if(N …

利用Python 实现 模拟退火算法

模拟退火算法 模拟退火算法流程图 初始温度 新温度值 进入循环 生成新的解 按照 bound按照 constraint 计算新解与当前解的目标差异判断是否接受解判断是否更新解循环结束按照温度降低率降低温度温度小于最低温度输出结果 模拟退火算法示例代码1 import numpy as npdef objec…

如何用arduino uno主板播放自己想要的曲子。《我爱你中国》单片机版本。

目录 一.效果展示 二.基本原理 三.电路图 四.代码 一.效果展示 arduino播放《我爱你中国》 二.基本原理 利用arduino uno单片机实现对蜂鸣器振动频率的调节&#xff0c;基于PWM控制系统通过代码实现控制。 三.电路图 四.代码 //main.uno #define Buzzer 2int PotBuffer …

vue启动失败问题

解决办法情况1&#xff1a;确认自己是否进入了vuedemo项目的目录。 解决办法情况2&#xff1a;目录进入正确npm start错误&#xff0c;这时可以进入自己电脑的项目文件中去删除node_modules和package-lock.json&#xff0c;然后回到控制台npm i或npm install安装依赖&#xff0…