前端有前端的潇洒,后端有后端的傲气
聊一聊http请求415问题

// 前端同学撸了这么串代码
service.interceptors.request.use(config => {// 在请求发送之前做一些处理if (!(/^https:\/\/|http:\/\//.test(config.url))) {const token = util.cookies.get('token')if (token && token !== 'undefined') {// 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改config.headers['X-Token'] = token}}return config},error => {// 发送失败console.log(error)Promise.reject(error)}
)
// 后端也撸了一串
@Controller("user")
@RequestMapping("/user")
@CrossOrigin(allowCredentials = "true", allowedHeaders = "*")
public class UserController extends BaseController {@Autowiredprivate UserService userService;@Autowiredprivate HttpServletRequest httpServletRequest;/***  登陆*/@RequestMapping(value = "/login", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED})@ResponseBodypublic CommonReturnType login(@RequestParam(name = "telephone") String telephone,@RequestParam(name = "password") String password) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException {// 入参校验if (org.apache.commons.lang3.StringUtils.isEmpty(telephone) ||StringUtils.isEmpty(password)) {throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR);}// 用户登陆服务用来校验用户登陆是否合法UserModel userModel = userService.validateLogin(telephone, this.EncodeByMd5(password));// 将登陆凭证加入到用户登陆成功的session内this.httpServletRequest.getSession().setAttribute("IS_LOGIN", true);this.httpServletRequest.getSession().setAttribute("LOGIN_USER", userModel);return CommonReturnType.create(null);}
}


发送后端请求时候出了这么个问题
前端:“你这怎么写的接口都报415了,你有没有测过”
后端:“我这写的没问题,我用Postman测过了”
前端:“给我看下你咋么测的”
后端:巴拉巴拉,一顿操作果然行
前端:“不行,我这调不通,你要怎么怎么改,后端要用对象接,啥嘛公司就是这么搞的,”
后端:“后端我这么写没问题,你要我用对象接我要写一个实体类,很麻烦”
前端:“不行你就要改”
后端:硬着头皮,忍着满腔怨气改了,以后每次写接口都要这么一顿操作。

以后每一个后端童鞋来到都会发生同样的一幕

谁对谁错暂且不言
解决问题:
1、前端不改后端修改

// 实体类
public class UserRO {private String password;private String telephone;public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}
}
@Controller("user")
@RequestMapping("/user")
@CrossOrigin(allowCredentials = "true", allowedHeaders = "*")
public class UserController extends BaseController {@Autowiredprivate UserService userService;@Autowiredprivate HttpServletRequest httpServletRequest;@RequestMapping(value = "/login2", method = {RequestMethod.POST})@ResponseBodypublic CommonReturnType login(@RequestBody UserRO userRO) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException {String telephone = userRO.getTelephone();String password = userRO.getPassword();// 入参校验if (org.apache.commons.lang3.StringUtils.isEmpty(telephone) ||StringUtils.isEmpty(password)) {throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR);}// 用户登陆服务用来校验用户登陆是否合法UserModel userModel = userService.validateLogin(telephone, this.EncodeByMd5(password));// 将登陆凭证加入到用户登陆成功的session内this.httpServletRequest.getSession().setAttribute("IS_LOGIN", true);this.httpServletRequest.getSession().setAttribute("LOGIN_USER", userModel);return CommonReturnType.create(null);}
}


2、前端改后端不改

// 前端
// 请求拦截器
service.interceptors.request.use(config => {config.headers['Content-Type'] = "application/x-www-form-urlencoded" // 这里增加// 在请求发送之前做一些处理if (!(/^https:\/\/|http:\/\//.test(config.url))) {const token = util.cookies.get('token')if (token && token !== 'undefined') {// 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改config.headers['X-Token'] = token}}config.data = qs.stringify(config.data) // // 这里增加return config},error => {// 发送失败console.log(error)Promise.reject(error)}
)


前后端整合---请求相关推荐

  1. Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院

    谷粒学院 课程详细页面功能完善 一.修改课程详细接口 1.在service_order模块添加接口 用于判断订单中status值是否为1,为1则为已支付 @RestController @CrossO ...

  2. 从前后端分离到前后端整合的“退步”(一)项目结构

    系列文章目录 从前后端分离到前后端整合的"退步"(一)项目结构 从前后端分离到前后端整合的"退步"(二)pom.xml文件配置 Spring Boot + Vu ...

  3. 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置

    系列文章目录 从前后端分离到前后端整合的"退步"(一)项目结构 从前后端分离到前后端整合的"退步"(二)pom.xml文件配置 Spring Boot + Vu ...

  4. 前后端整合+Request(请求转发)+respon(重定向)+get+post+Filter过滤器

    一.请求Request 是指 从前端浏览器 到 后端的Servlet程序 的访问过程,叫请求的过程 可以使用Servlet提供的Request对象,来解析请求中的请求参数 1.常用方法 getPara ...

  5. vue axios 跨域_SpringBoot+Vue从零开始搭建系统(三)前后端整合二

    前端整合 前端代码 KwgcFooter.vue 页面底部 KwgcHeader.vue 页面头部 KwgcLogin.vue 用户名: 密码: 登录 登录验证情况: kwgcHeader.vue 这 ...

  6. vue 项目引用static目录资源_SpringBoot+Vue从零开始搭建系统(三)前后端整合二

    前端整合 前端代码 KwgcFooter.vue 页面底部 KwgcHeader.vue 页面头部 KwgcLogin.vue 用户名: 密码: 登录 登录验证情况: kwgcHeader.vue 这 ...

  7. 前后端分离html ssm,前后端分离请求ssm返回数据

    当你的开发是前后端分离时,前台发起ajax请求,请求后台数据时会出现跨域问题,为前后台开发人员带来很多不便,如果你用的是springMVC,那么这个问题在后台非常好解决. springMVC为我们提供 ...

  8. 若依(RuoYi-Vue)+Flowable工作流前后端整合教程

    此教程适合若依前后端分离项目,其他项目可以在扩展列表中进行查找. 近期公司里需要对很久以前的RuoYi-Vue前后端分离项目扩展出flowable的功能,当然这个重任也是落在了我的身上(不然也不会有这 ...

  9. SSM+JSP+Bootstrap+Ajax小实例(员工CRUD系统)(五:员工查询前后端(请求返回json的方式))

    原文再续,书接上回.上次我们讲了怎么把用户信息放到model里,然后用jsp+bootstrap做一个简单又不丑陋的界面去展示,但是现在讲究前后端分离,所以我们的接口返回一个json才是如今的王道,这 ...

最新文章

  1. 使用Forms Authentication实现用户注册、登录 (二)用户注册与登录
  2. 使用Eclipse与Pydev开发Python
  3. Python--day64--内容回顾
  4. stc单片机 读写flash_STM32单片机基础知识杂谈(1)
  5. 云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇
  6. notepad++插件实现json、xml格式化
  7. php函数相关函数,PHP数组相关函数汇总
  8. 支架预压弹性变形值计算_现浇连续梁桥支架搭设及预压施工技术控制
  9. 不懂技术的小白,使用电商网站建设工具有什么注意事项?
  10. Python - 多个Excel合并 (列不同序 或 列数不同)
  11. 二元函数可微与切平面存在的关系
  12. hdu 4939 Stupid Tower Defense 2014多校七 DP
  13. linux刻录文件,linux中刻录iso到光盘
  14. codeup刷题2.5小节 C/C++快速入门->数组——《算法笔记》(胡凡)
  15. Excel的Sumif函数
  16. 对透明表、簇表的理解
  17. 【NDN实验】ndnSIM 2.0: A new version of the NDN simulator for NS-3 全文翻译
  18. libyuv接口NV12ToI420的实际使用
  19. ehcache 缓存丢失_求助,EhCache缓存中数据失效的问题!
  20. 2023年美赛ICM问题E:光污染 这题很好做啊!

热门文章

  1. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
  2. 静态路由--------默认路由和路由汇总
  3. iOS获取、写入系统相册图片
  4. Notepad++配置Python运行环境
  5. 当你打开网页的时候,世界都发生了什么(1)
  6. php中静态方法的和属性的使用
  7. 云消防大数据_消防云大数据
  8. C++函数的返回值是指针
  9. 开发文档模板_究竟什么样的开发流程是规范的?
  10. 计算机主机的声音线是哪个好,四大常用视频接口对比,你的电脑是哪种接口?...