当前位置: 首页 > news >正文

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#333let { pathname, query } = url.parse(req.url, true);console.log(pathname); // 路径console.log(query); // 查询参数// request 是一个可读流// 有请求体才会触发 data 事件 curl -v -X POST --data k=1 http://localhost:3001let 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);}
});

在这里插入图片描述

http://www.lryc.cn/news/108742.html

相关文章:

  • 模版下载和Excel文件导入
  • Datax 数据同步-使用总结(一)
  • 代码随想录算法训练营第九天| 232.用栈实现队列,225.用队列实现栈
  • 求解二次方程
  • 【hive 运维】hive注释/数据支持中文
  • 架构,性能和游戏 《游戏编程模式》学习笔记
  • Spring Bean的生命周期
  • 基于量子同态的安全多方量子求和加密
  • 前端自动化测试:确保质量和稳定性的关键步骤
  • 《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》
  • Java实现十大经典排序算法之快速排序
  • 【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)
  • php运算符的短路特性
  • C语言假期作业 DAY 13
  • 以产品经理的角度去讲解原型图---会议OA项目
  • C++ 外部变量和外部函数
  • C# Onnx Paddle模型 OCR识别服务
  • MCUXpresso for VS Code -- 基于VSCode开发RT1176
  • MySQL的使用——【初识MySQL】第二节
  • MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字
  • ⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态
  • Element的el-select下拉框多选添加全选功能
  • python调用pytorch的clip模型时报错
  • MySQL 数据库 binLog 日志的使用
  • Apache Storm入门介绍之三分钟看懂Apache Storm
  • RF手机天线仿真介绍(三):调谐开关分析
  • Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置
  • GPT Prompt编写的艺术:如何提高AI模型的表现力
  • Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)
  • 【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面