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

[交互]接口与路由问题

[交互]接口与路由问题

  • 场景描述
  • 问题分析
  • 解决方案

这是在实战开发过程中遇到的一个问题,所以导致产生了服务端如何区分浏览器请求的是前端路由还是 api 接口的问题??

场景描述

这是一个前后端分离开发的项目,因此前端一般都会使用客户端路由,现在的场景是前端代码打包后作为 java web 的静态资源在 tomcat 中部署时,并且没有修改相关代码

此时,通过浏览器端输入域名,进入指定的 index.html 页面,加载前端路由设定,可以正常的一步步进行后续路由页面的访问

如果前端使用的 hash 路由,在浏览器直接修改路由也可以正常的进行路由的访问,与接口并不会混淆

但是如果使用的路由是浏览器路由,也即 history 模式,此时当访问非’/’(也即非根目录)的其它路由时就会出现问题

例如访问:https://xxxx 会直接跳转到前端路由"/"指定跳转到的页面.在页面中点击导航形成的跳转,会正常访问,但是当直接修改浏览器的访问路径为一个路由例如:xxxx/router/about 时服务端会将该请求直接导向 404,并不会请求前端的路由

服务端或者前端如何判断浏览器发出的请求是路由请求,还是 api 接口的请求?因为此时它们在浏览器的地址形式是完全相同的

问题分析

该问题是很久之前遇到的一个问题,当时并没有有效的解决方案,所以最终是通过将路由改为 hash 路由的方式解决的

现在在看这个问题,发现:
虽然采用了前后端分离,但是并不是完全的前后端分离

  • 前后端的域名是相同的,因此导致了可能触发接口的情况
    部署时将前端项目,复制到了 Java 的项目中,最终还是像未分离时部署的方式是一样的,因此域名一致
  • java 项目的 xml 文件设置了静态资源的路径,指向单页面首页
  • 浏览器地址非 html 后,所以没有加载前端的路由,此时自然无法实现路由的跳转

解决方案

  1. 完全的前后端分离,此时域名分离,自然不存在无法区分的问题
  2. java 配置,所有的地址指向前端的首页
http://www.lryc.cn/news/167555.html

相关文章:

  • linux 6中4T磁盘识别并分区格式化挂接
  • 【Unity】ShaderGraph应用(浮动气泡)
  • Android EditText setTranslationY导致输入法覆盖问题
  • MySQL 导出和导入数据
  • ubuntu22.04 设置网卡开机自启
  • 持续部署:提高敏捷加速软件交付(内含教程)
  • Spark_Spark内存模型管理
  • C++之operator=与operator==用法区别(二百一十八)
  • 【漏洞复现】WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
  • 基于安卓Java试题库在线考试系统uniapp 微信小程序
  • Java入坑之语法糖
  • VUE响应式
  • Godot 和 VScode配置C#环境注意事项
  • 三、Mediasoup进程通信实现的原理
  • 【计算机网络】 TCP——四次挥手
  • 「Java开发指南」在MyEclipse中的Spring开发(二)
  • 策略模式,一种广泛应用于各种情况的设计模式(设计模式与开发实践 P5)
  • 90. 子集 II
  • Intel汇编语言程序设计(第7版)第四章编程练习题答案
  • EDA(Exploratory Data Analysis)探索性数据分析
  • Python中的多媒体处理库有哪些?
  • LeetCode【28. 找出字符串中第一个匹配项的下标】
  • 产业互联网开始从简单的概念,逐渐成为可以落地的存在
  • element-ui tree组件实现在线增删改
  • 华为开源自研AI框架昇思MindSpore应用案例:消噪的Diffusion扩散模型
  • 华为CD32键盘使用教程
  • 第三节:在WORD为应用主窗口下关闭EXCEL的操作(2)
  • Layui + Flask | 弹出层(组件篇)(04)
  • Electron和vue3集成(推荐仅用于开发)
  • Vue.js和TypeScript:如何完美结合