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

vue3+express联调接口时报“\“username\“ is required“问题

我用node .js的express框架写的登录接口,发现postman可以调通,但是vue3前端报错
在这里插入图片描述
vue3
在这里插入图片描述
我发现是我后端node.js的app.js入口文件中配置的解析前端参数的解析中间件和前端请求头中的Content-Type配置不一致的原因
解决方案
因为我后端配置解析表单数据的中间件是express.urlencoded({ extended: false }),只能解析application/ x-www-from-urlencoded 格式的表单数据
在这里插入图片描述
所以第一种方法修改前端,后端不变
前端修改
登录接口修改添加这2个,如果你所有接口都是这种数据解析
把 “Content-Type”: “application/x-www-form-urlencoded”, 加载请求拦截器里也行,我这里是只说登录单个接口,所以把 “Content-Type”: "application/x-www-form-urlencoded"这个单独加到了登录里面为了测试
在这里插入图片描述
这是我的请求拦截器和相应拦截器的配置

import axios from 'axios'const http = axios.create({baseURL: 'http://localhost:5000', // 根据你的 Node 服务地址修改timeout: 10000,
})// 请求拦截器
http.interceptors.request.use(config => {// 可以在这里添加 token 等const token = localStorage.getItem('token')if (token) {config.headers.Authorization = `${token}`}// 确保已有 Authorization 头不被覆盖// if (token && !config.headers.Authorization) {// config.headers.Authorization = `${token}`;//}// // 如果请求体是对象且尚未设置 Content-Type// if (config.data && typeof config.data === 'object' &&//   !config.headers['Content-Type']) {//   config.//   headers['Content-Type'] = 'application/json;charset=utf-8';// }return config
}, error => {return Promise.reject(error)
})// 响应拦截器
http.interceptors.response.use(response => {console.log("请求成功:", response.config.url, response.data);// 解析JSON数据const data = typeof response.data === 'string' ?JSON.parse(response.data) :response.data;if (data.status && data.status !== 0) { // 0表示成功return Promise.reject(data);}return data;
}, error => {return Promise.reject(error)
})export default http

结果
在这里插入图片描述
第二种方法修改后端的中间件,前端不变
给后端代码添加
app.js文件中添加express.json解析application/json的中间件,前端代码不变

前端代码 headers[‘Content-Type’] = ‘application/json;charset=utf-8’;可以加可以不加,因为你发送的是一个 JavaScript 对象(credentials),
axios 会自动将请求头 Content-Type 设置为 application/json
使用 JSON.stringify(credentials) 转换请求体
在这里插入图片描述
结果
在这里插入图片描述

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

相关文章:

  • 获取华为开源3D引擎 (OpenHarmony),把引擎嵌入VUE中
  • Spring Boot中请求参数读取方式
  • AIC8800M40低功耗wifi在ARM-LINUX开发板上做OTA的调试经验
  • (六)复习(OutBox Message)
  • ParaCAD 笔记 png 图纸标注数据集
  • 设计模式(结构型)-适配器模式
  • jenkins部署springboot+Docker项目
  • 力扣网编程134题:加油站(双指针)
  • [实战]调频三角波和锯齿波信号生成(完整C代码)
  • leetcode-hot100(283.移动零)
  • 力扣面试150(29/100)
  • OA系统中的搜索功能方案:简单搜索vs高级搜索
  • SpringDataRedis入门
  • c++——浅拷贝和深拷贝、浅赋值和深赋值
  • Django快速入门搭建网站
  • 经典同步问题详解
  • 液冷智算数据中心崛起,AI算力联动PC Farm与云智算开拓新蓝海(二)
  • Apache Cloudberry 向量化实践(三)重塑表达式构建路径:Gandiva 优化实战
  • 2D下的几何变换(C#实现,持续更新)
  • SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名
  • SpringCloud之Ribbon
  • BootstrapBlazor与JS互调
  • Semi-Supervised Single-View 3D Reconstruction via Prototype Shape Priors
  • 小智AI模型接入MCP
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • SQL Server通过CLR连接InfluxDB实现异构数据关联查询技术指南
  • SpringBoot JWT
  • Rust与UE5高效集成实战
  • uniapp制作一个个人页面
  • ffmpeg-api记录