nodejs-处理http请求

news2024/11/6 7:35:39

文章目录

  • 前言
  • node 处理 get 请求
  • node 处理 post 请求
  • 总结


前言

使用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请求

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UOS系统下fastdeploy推理

Cmake安装 apt install build-essential zlib1g-dev libssl-dev wget https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz tar -zxvf cmake-3.23.2.tar.gz cd cmake-3.23.2 ./bootstrap make make install cmake --version在Github或者gitee 查…

IDEA中启动类是灰色,重启idea启动类自动消失解决方法

问题描述: idea中启动多个服务会在services中展示服务的信息和控制台,但是经常有一些启动类会变成灰色的,而且重启idea后经常会自动消失,下次启动时需要手动再去启动,很麻烦。如下图所示: 解决方法&…

智能配电管理系统

智能配电管理系统是按用户的需求,遵循配电系统的标准规范而二次开发的一套具有专业性强、自动化程度高、易使用、高性能、高可靠等特点的适用于低压配电系统的电能管理系统。 智能配电管理系统包括监控管理层、网络通信层、现场采集层、用电保护层和受控设备层&…

基于javaweb的网上图书销售系统(servlet+jsp)

系统简介 本项目采用eclipse工具开发,jspservletjquery技术编写,数据库采用的是mysql,navicat开发工具。 角色: 管理员普通用户 模块简介 管理员: 登录用户管理图书分类管理图书管理图书订单管理图书评论管理数据统…

视频云存储/安防监控/AI分析/视频AI智能分析网关:垃圾满溢算法

随着我国科技的发展和城市化进程加快,大家对于生活环境以及空气质量更加重视,要求越来越严格。城市街道垃圾以及生活区垃圾满溢已经成为城市之痛。乱扔垃圾,垃圾不入桶这些行为已经严重影响到了城市的美化问题。特别是炎热的夏日和雨水季节&a…

应用在汽车新风系统中消毒杀菌的UVC灯珠

在病毒、细菌的传播可以说是一个让人敏感而恐惧的事情。而对于车内较小的空间,乘坐人员流动性大,更容易残留细菌病毒。车内缺少通风,残留的污垢垃圾也会滋生细菌,加快细菌的繁殖。所以对于车内消毒就自然不容忽视。 那么问题又来…

软件提示vcruntime140_1.dll丢失的解决方法,以及丢失的原因总结

在运行某些程序时,可能会出现“vcruntime140_1.dll 丢失”的错误提示。这是因为 vcruntime140_1.dll 是 Visual C Redistributable 的一部分,它通常被安装在 Windows 操作系统上。如果该文件丢失或无法找到,可能会导致程序无法正常运行。在我…

华为云使用脚本初始化Linux数据盘

初始化新挂载的磁盘 登录云服务器,执行以下命令获取自动初始化磁盘脚本。 wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh 说明: 若回显异常,请检查云服务器是否绑定弹性公…

vue-cli搭建一个新项目及基础配置

vue-cli搭建一个新项目及基础配置 一、安装步骤二、main.js配置三、router下的index.js 一、安装步骤 1.安装node环境:下载地址:Node.js 2.安装脚手架:npm install -g vue/cli 3.创建vue项目:vue create 项目名 4.进入项目&…

什么耳机音质最好又不伤耳朵,什么耳机好用耳朵不疼

如果你还在疑问什么耳机好用并且用了耳朵不痛的话,那你就应该看完本片文章了! 近年来,骨传导耳机在市场上的热度可谓是飙升不止,走在街头,你会发现无数人戴着这种科技神器。相较于传统的真无线蓝牙耳机,骨传…

奇葩招聘:招程序员,限45岁以上,不加班,薪资还不低……

咱就是说,这年头,谁还不想找一份“越老越吃香”的工作呀? 但是在多金的互联网,却一直充斥着“35岁焦虑”的话题,弄得人心惶惶。焦虑归焦虑,越老越吃香的工作还是有滴~这不,日前,便有…

关于火绒邮件监控引起的扫描任意IP会有25和110端口反馈

之前测试过公司的外网IP,因为之前一直很注意对外映射的端口,都限制了可以访问的IP地址和端口,所以之前扫描的时候是一个端口都扫描不出来的。最近闲的无事,想着再扫描试试,结果发现居然开放了25和110端口,我…

idea中删除断点与删除所有断点

如下如所示,debug执行后,选中第一步 然后在弹出的弹窗中,勾选全部断点(默认已勾选) ,点击减号即可,最后Done关闭弹窗

【运维日常】infiniband网络架构,容器间跨机器不同网段通信

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

AutoDock Vina多配体对接 (Simultaneous Multiple Ligand Docking)

1. 多配体分子对接简介 多配体分子对接(Simultaneous Multiple Ligand Docking, SMLD)或(Multiple Ligand Simultaneous Docking, MLSD)是一种分子对接技术,用于将多个配体(小分子药物候选物)同…

问道管理:底部渐渐抬高 今年反弹时刻或已来临

快速探底后,两市呈现分解走势。 沪指周三低开震动,指数在20日均线取得支撑后小幅上升,最终以红盘报收。深成指走势弱于沪指,尽管午后指数有所上升,但最终未能翻红。到收盘,沪指报收3158.08点,上…

睿趣科技:现在开一家抖音小店到底能不能做起来

抖音,这个年轻人熟悉的短视频平台,如今已成为许多创业者的新天地。在这个平台上,各种各样的小店如雨后春笋般涌现,它们以创意的产品和精彩的内容吸引了大批年轻用户。然而,要在抖音上开一家小店并不是一帆风顺的事情&a…

《C++设计模式》——创建型

前言 创建型为了创建东西才是有用的,创建型设计模式使用的场景: 1、创建一个东西; 2、可重复利用; 3、灵活性高,代码可因地制宜。 Factory Method(工厂模式) 简单工厂模式 主要用于创建对象。新添加类时&#xff0…

性能测试包含哪些内容?

性能测试是对软件产品在特定条件下的性能进行测试和评估的过程。性能测试的内容可以包括以下几个方面: 1、负载测试:负载测试是指在特定条件下,对软件产品的性能进行测试和评估。测试人员可以通过模拟不同的用户数量、并发请求、访问频率等条…

学妹学Java(一)

⭐简单说两句⭐ 作者:后端小知识 CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 Hello,亲爱的各位友友们,好久不见&#xff0…