nodejs-处理http请求

2023-11-13


前言

使用nodejs搭建后端代理服务,处理http请求,理解nodejs是如何处理get、post请求的


node 处理 get 请求

  • 使用 http 模块创建代理服务器
  • 使用 querystring 模块解析请求参数
  • req.end 方法发送消息

入口文件 index.js

const http = require('http')
const queryString = require('querystring')

// 创建代理服务器
const server = http.createServer((req, res) => {
  const {url} = req
  console.log('request----url',url) // 打印下请求的url
  req.query = queryString.parse(url.split('?')[1]) 
  res.end(JSON.stringify(req.query)) // 对象转JSON字符串,否则发送的将会是 [object Object]
})

server.listen(3030) // 监听3030接口
console.log('3030 listening~~~')

end:写出最后的数据,并且关闭流,不使用该方法的话,客户端将默认对话并未结束并保持等待;

启动服务:

node index.js

浏览器访问url: http://localhost:3030/node/http-test?method=get&year=2023,浏览器会会发起get请求,结果如下
在这里插入图片描述

控制台:
在这里插入图片描述

通过观察浏览器的network以及打印,会发现浏览器自动发送一个路径为 /favicon.ico 的请求,这个请求是页面tab中的小图标,可以忽略

在这里插入图片描述

node 处理 post 请求

  • 使用 http 模块创建代理服务器
  • 使用 req.on 方法监听请求
  • toString() 将二进制转换为字符串

入口文件 index.js

const server = http.createServer((req, res) => {
  
   const {url, headers} = req
   
   console.log('request----url', url)
   console.log('headers----', headers)
   res.setHeader('Content-type','application/json')
   let data 
   req.on('data', chunk => {
    // 二进制 => 字符串
    data += chunk.toString()
   })

   req.on('end', chunk => {
    console.log('数据接收完毕----', data)
    res.end(
      JSON.stringify({
        data:headers,
        code:200
      })
    )
   })
 })
server.listen(3030)
console.log('3030 listening~~~')

req.on:服务端以流的形式接收来自客户端的数据,on 方法对收到的数据进行监听并决定处理方式

  • data: 接收到数据时触发,当传输的数据流较大时,可能会分多次接收
  • end: 数据接收完毕时触发

启动服务:

node index.js

发送post请求需要借助postman工具,body中携带json数据并发送请求:

在这里插入图片描述

控制台:

在这里插入图片描述

总结

node处理http请求

  • get请求
  • post请求
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nodejs-处理http请求 的相关文章

随机推荐

  • 详解C语言中的数组指针与指针数组

    详解数组指针与指针数组 数组指针 一 区分 首先我们需要了解什么是数组指针以及什么是指针数组 如下图 int p 5 int p 5 数组指针的意思即为通过指针引用数组 p先和 结合 说明了p是一个指针变量 指向一个大小为5的数组 所以 i
  • MSER+NMS 文本检测(身份证+发票+火车票)

    此篇文章不细说MSER和NMS原理 以实战为主 MSER是最大稳定极值区域 是对一幅灰度图像 灰度值为0 255 取阈值进行二值化处理 阈值从0到255依次递增 阈值的递增类似于分水岭算法中的水面的上升 随着水面的上升 有一些较矮的丘陵会被
  • axure文本框单击提示文字消失_Axure基础原件使用

    本内容从网上搜索 仅供参考学习 1 添加元件到工作区 在左侧元件中选择要使用的元件 按住鼠标左键不放 拖到画布适合的位置上松开 2 添加元件名称 在检视面板的元件名称文本框中输入元件自定义名称 3 设置元件位置 尺寸 元件的位置和尺寸可以通
  • GNU GRUB version 2.06 Minimal Bash-lke line editing is supported 问题修复

    一 问题背景 博主喜欢折腾系统 电脑原来有一个windows系统 想整一个Linux双系统 结果开机时出现以下画面 GNU GRUB version 2 06 Minimal Bash lke line editing is support
  • freessl 免费https证书申请

    1 https freessl cn 2 输入域名和邮箱 3 选 文件验证 和 浏览器生成 如图 image png 按照该网页要求的指定位置 将两个验证文件ftp到你的网站服务器 能用http访问到这两个文件即可 4 下载文件 image
  • Spring aop报错:com.sun.proxy.$Proxyxxx cannot be cast to yyy

    在使用Spring AOP时 遇到如下的错误 Exception in thread main java lang ClassCastException com sun proxy Proxy0 cannot be cast to com
  • Linux内核学习:I2C_SLAVE_FORCE

    在Linux内核源代码include linux i2c dev h文件内 有如下定义 define I2C SLAVE 0x0703 Use this slave address define I2C SLAVE FORCE 0x0706
  • 立体电影

    立体电影 百科名片 1953年5月24日立体电影首次出现 为了把观众从电视夺回来 好莱坞推出了一种新玩艺儿 立体电影 戴着特殊眼镜的观众像在观看 布瓦那魔鬼 及 蜡屋 这类惊险片那样 发现自己躲在逃跑的火车及魔鬼的后面 从而为我们带入了立体
  • weex-26-dom模块

    D0BE7A90 F94A 4C9A 98D6 1EE3D44C1E5E png 本节学习目标 dom 滚动到指定组件 dom 获取组件的布局信息 我们经常会看到上图所示的需求 当我们将列表向下滑动一段时间后 想要立刻回到顶部 这个时候就要
  • qt中bug总结:遇到C1071:在注释中遇到意外的文件结束

    qt中编译时突然出现这个问题 然后就是编译不过去 百度了好多之后 最后就是在报错的cpp文件中进行查找 找到这个 的注释格式 发现问题就是它导致的 去掉这种注释之后 则发现没问题了
  • 第十三届蓝桥杯省赛JavaA组-试题D-GCD

    题目 代码 import java util Scanner public class lqb13 A组04GCD public static void main String args 希望gcd a k b k 尽可能的大 而k尽可能的
  • 那些从黑马毕业的学生,都去哪工作了?

    我们对这个世界的认知 常常受到身边人的影响 你是否听到过这样的话 房子越来越买不起了 结婚彩礼真的是越来越贵了 找一份不错的工作真是越来越难了 这些看法 让你对生活 对工作产生畏惧 但是 你身边一定也有这样的人 30出头已经买房买车了 刚毕
  • 汽车加油问题【贪心算法】

    1 原版 Problem Description 一辆汽车加满油后可行驶n公里 旅途中有若干个加油站 设计一个有效算法 指出应在哪些加油站停靠加油 使沿途加油次数最少 并证明算法能产生一个最优解 对于给定的n和k个加油站位置 计算最少加油次
  • 计算机房房间要求,数据中心机房的标准规范

    数据中心机房的标准规范 工程中的数据中心机房建设是保证计算机网络设备和各级劳动保障系统正常运转的关键 现在的计算机设备对运行环境要求较高 因此 必须按照一定的标准规范 科学地设计机房 一 机房建设需要执行的标准 主机房建设工程必须遵循国家机
  • Echarts+Python让你的数据可视化(文末有完整源码)

    用一个小例子 一个小程序带你了解pyecharts的基础用法 什么是Echarts Echarts介绍 代码演示 支持自定义主题 使用Echarts 安装pyecharts库 使用pyecharts制作柱形图 Echarts Python制
  • Java static 代码块测试

    Java 中代码执行顺序 类加载 gt 执行引擎 类加载 执行静态代码块 今天成员初始化 执行引擎 执行成员变量初始化 然后构造函数 package basic class Test2 Person2 person new Person2
  • 全局处理Long类型字段返回前端精度丢失

    项目场景 后端返回一个列表数据到前端 其中有部分字段类型后端定义的是Long类型并且是用雪花算法生成的 从响应数据中发现返回的值与数据库的不一致 丢失了精度 问题描述 后端使用MybatisPlus时 主键字段的主键策略用是 TableId
  • ABAP DOI技术中I_OI_SPREADSHEET接口的使用

    前言部分 大家可以关注我的公众号 公众号里的排版更好 阅读更舒适 正文部分 在DOI技术中 I OI SPREADSHEET接口有很多对excel的操作方法 举个例子 CELL FORMAT方法 这个方法里面就有参数ALIGN 可以去覆盖e
  • antd pro(ProLayout) mix混合菜单不生效

    一 问题描述 antd pro的混合菜单模式 算是一种比较新的导航菜单模式 可以让顶部全局导航 侧边导航混合模式同时出现 满足一些特别的需求 ProLayout高级布局组件的API里有一个layout参数 可以设置layout的菜单模式 我
  • nodejs-处理http请求

    文章目录 前言 node 处理 get 请求 node 处理 post 请求 总结 前言 使用nodejs搭建后端代理服务 处理http请求 理解nodejs是如何处理get post请求的 node 处理 get 请求 使用 http 模