express处理get请求和post请求

一、处理get请求

(1)req.query

1》定义:

此属性是一个对象,包含路由中每个查询字符串参数的属性。此对象默认为 {}

2》代码示例:

例如:获取http://127.0.0.1:8000/?name=jane 的name的值

javascript 复制代码
const express=require('express');
const app=express();
app.get('/',(req,res)=>{
    let name=req.query.name;
    res.send(`hello ${name}`);
    console.log('name的值为'+name);
})

(2)req.params

1》定义:

此属性是一个包含映射到命名路由"参数"的属性的对象。此对象默认为 {}

2》代码示例:

例如:获取http://127.0.0.1:8000/?name=jane 的name的值

javascript 复制代码
const express=require('express');
const app=express();
app.get('/user/:name',(req,res)=>{
    res.send('hello')
    console.log(req.params); //输出{ name: 'jane' }
})

二、处理post请求

(1)req.body

1》定义:

此属性包含在请求正文中提交的数据键值对。默认情况下,它是 undefined,并在你使用urlencoded、 body-parser 和 multer 等正文解析中间件时填充

Express框架4.16版本前不包含解析POST请求的API,需要安装第三方模块 body-parser 或 multer进行解析,这之后req.body默认为{ }。4.16版本后内置了urlencoded中间件可解析post请求数据,分别放置在req.body中。

(2)body-parser中间件

1》定义:

仅做了解,使用推荐内置中间件

body-parser是用来解析POST请求体的中间件,默认只能解析application/x-www-form-urlencoded和application/json类型的数据。不同的数据格式,需配置不同的解析器

Express 4.16.0 版本及之后,express.json() 和 express.urlencoded() 这两个中间件被直接集成进了 Express,成为了express内置中间件。所以在许多情况下,你不再需要额外安装 body-parser。不过,为了兼容旧版本的 Express 或者其他框架,了解 body-parser 的使用仍然是有帮助的。

2》安装:

npm install body-parser

3》使用:

(1)常见的form提交:application/x-www-form-urlencoded
javascript 复制代码
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:true}));

extended: true 选项允许解析复杂的 URL 编码数据,如嵌套对象和数组

(2)提交json格式的数据:application/json
javascript 复制代码
app.use(bodyParser.json());

(3)multer中间件

具体见:http://t.csdnimg.cn/5YPXJ

1》定义:

multer中间件一般用来解析multipart/form-data类型的数据(通常用于上传文件)

提交文件:multipart/form-data

eg:<input type=file enctype="multipart/form-data" name="filename">

2》安装:

npm install multer -save

3》导入:

const multer=require('multer');

(4)内置中间件

1》定义:

Express 4.16.0以上增加了一些内置的中间件,对于基本的json和urlencoded解析,可以不用body-parser

2》内置中间件

express.json()和express.urlencoded(({extended:true|false}))

3》使用:
(1)内置中间件express.json():解析application/json
javascript 复制代码
const express = require('express');
const app = express();
app.use(express.json());
app.post('/json', (req, res) => {
    console.log(req.body); // 这里的 req.body 会包含解析后的 JSON 数据
    res.send('JSON data received!');
  });
app.listen(3000, () => {
    console.log('Server is running on port 3000');
  });
(2)内置中间件express.urlencoded():解析application/x-www-form-urlencoded
javascript 复制代码
app.use(express.urlencoded({extended:true}))
app.post('/form', (req, res) => {
    console.log(req.body); // 这里的 req.body 会包含解析后的 URL 编码数据
    res.send('Form data received!');
  });
app.listen(3000, () => {
    console.log('Server is running on port 3000');
  });
相关推荐
码农学院1 小时前
Node.js MongoDB构建户外用品GEO优化内容管理平台
数据库·mongodb·node.js
憧憬成为java架构高手的小白1 天前
黑马八股--中间件学习之MQ(RabbitMQ)
学习·中间件
会周易的程序员1 天前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm
5G微创业1 天前
Python / Node.js 调用短视频去水印 API 完整示例(含 SDK)
python·node.js·音视频·api·sdk·短视频
张人玉1 天前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
寒水馨1 天前
macOS下载、安装electron-v43.2.0(附安装包electron-v43.2.0-darwin-arm64.zip)
javascript·macos·electron·node.js·跨平台·桌面应用开发·开源框架
hoLzwEge2 天前
拯救低效调试!code-inspector-plugin 让代码定位如虎添翼
前端·前端框架·node.js
weixin_727535622 天前
MinIO大文件上传深度拆解:从原理到生产落地的完整指南
java·中间件
无巧不成书02182 天前
Node.js 多版本管理完全教程:nvm 全平台安装、版本切换与新手避坑实战
node.js·nvm·全平台安装·避坑实战
无情的西瓜皮2 天前
给 AI 装个“工具箱”:MCP 协议入门与 Node.js 实战
人工智能·node.js