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

深圳市住房与建设局网站本地宁波网站建设

深圳市住房与建设局网站,本地宁波网站建设,百度小程序怎么做,东莞建网站公司哪个好前传#xff1a;浪花 - 根据标签搜索用户-CSDN博客 目录 一、完善后端搜索标签接口 二、前后端搜索标签接口的对接 1. 使用 Axios 发送请求 2. 解决跨域问题 3. Axios 请求传参序列化 4. 接收后端响应数据 5. 处理后端响应数据格式 6. 搜索结果为空的页面展示 附浪花 - 根据标签搜索用户-CSDN博客 目录 一、完善后端搜索标签接口 二、前后端搜索标签接口的对接 1. 使用 Axios 发送请求 2. 解决跨域问题 3. Axios 请求传参序列化 4. 接收后端响应数据 5. 处理后端响应数据格式 6. 搜索结果为空的页面展示  附解决跨域问题的几种方式 1. 方式一修改域名和端口 2. 方式二网关支持Nginx——添加允许跨域配置 3. 方式三后端服务支持 一、完善后端搜索标签接口 1. 添加 Controller 层调用 userService 中之前写好的 searchUsersByTags() 来根据前端传来的标签搜索过滤数据库中的用户 /*** 根据标签搜索用户* param tagNameList 标签列表* return 搜索到的用户列表*/GetMapping(/search/tags)public BaseResponseListUser searchUsersByTags(RequestParam(required false) ListString tagNameList) {if(CollectionUtils.isEmpty(tagNameList)) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}ListUser userList userService.searchUsersByTags(tagNameList);return ResultUtils.success(userList);}2. 启动项目测试接口 使用 Knife4j 接口文档传递参数进行接口调试传递空的标签列表后端做了请求参数是否为空的校验参数为空抛出异常全局异常处理器会进行统一处理 传递正确参数后端根据参数列表标签过滤出来的用户列表数据 数据库暂时只有一个用户有标签信息所以响应数据的用户列表只有一个用户 二、前后端搜索标签接口的对接 参考官方文档axios中文网|axios API 中文文档 | axios (axios-js.com) 1. 使用 Axios 发送请求 整合 Axios npm install axios 创建 Axios 实例并定义 baseURLbaseURL 作为请求的前缀后续修改主机和端口号项目部署上线时只需要修改 baseURL 即可不需要修改所有请求地址的前缀 const instance axios.create({baseURL: https://some-domain.com/api/,timeout: 1000,headers: {X-Custom-Header: foobar} }); 定义全局请求拦截器和全局响应拦截器 // Add a request interceptor axios.interceptors.request.use(function (config) {// Do something before request is sentreturn config;}, function (error) {// Do something with request errorreturn Promise.reject(error);});// Add a response interceptor axios.interceptors.response.use(function (response) {// Do something with response datareturn response;}, function (error) {// Do something with response errorreturn Promise.reject(error);}); 发送搜索请求点击搜索按钮进入搜索结果页面时页面一加载就发送 GET 请求 axios.get(/user?ID12345).then(function (response) {// handle successconsole.log(response);}).catch(function (error) {// handle errorconsole.log(error);}).then(function () {// always executed}); 引起跨域问题 Access to XMLHttpRequest at http://localhost:8080/api/user/search/tags from origin http://localhost:5173 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 2. 解决跨域问题 这里使用后端支持的方式解决跨域问题在 Controller 前添加注解 CrossOrigin默认允许所有地址跨域也可以指定特定地址 CrossOrigin(poigins { http://user.zhulang-user-center.top }, methods { RequestMethod.POST }) 跨域访问成功✔ 参数传递出现问题传递格式有误tagNameList 多了 []传到后端无法识别 3. Axios 请求传参序列化 安装 qs 库querystring parser 参数字符串解析器再次发送请求 import {onMounted, ref} from vue; import myAxios from /src/plugins/myAxios.js; import qs from qs;const { tags } route.query;onMounted( () {myAxios.get(/user/search/tags, {params: {tagNameList: tags,},paramsSerializer: params {return qs.stringify(params, {indices: false})}}).then(function (response) {// handle successconsole.log(/user/search/tags succeed, response);}).catch(function (error) {// handle errorconsole.log(/user/search/tags error, error);}).then(function () {// always executed}); }) 请求参数格式正常 http://localhost:8080/api/user/search/tags?tagNameList%E7%94%B7 查看后端是否接收到请求参数接收成功并响应给前端 4. 接收后端响应数据 修改之前的模拟数据之前的搜索结果页面只放了一个 mockUser 进行测试接受 GET 请求发送后后端返回的用户列表存入 userList在 Card 商品卡片组件中遍历展示await 关键字等 myAxios 请求从后端获取到数据再存到 userListData 中请求成功 .then() 响应函数返回响应数据从 response 对象中获取 response.data?.data script setup langtsimport { useRoute } fromvue-router import {onMounted, ref} from vue; import myAxios from /src/plugins/myAxios.js; import qs from qs; import type {UserType} from /models/user;const route useRoute(); const { tags } route.query; const userList ref([]);onMounted( async () {const userListData: UserType[] await myAxios.get(/user/search/tags, {params: {tagNameList: tags,},paramsSerializer: params {return qs.stringify(params, {indices: false})}}).then(function (response) {// handle successconsole.log(/user/search/tags succeed, response);return response.data?.data;}).catch(function (error) {console.log(/user/search/tags error, error);})if(userListData) {userList.value userListData;// userListData 存在则赋给 userList 进行展示} })/script 5. 处理后端响应数据格式 问题后端保存的标签 tags 是 JSON 字符串格式前端把每个字符都解析成了一个数组元素即每个字符都被解析成了一个标签 在前端解析后端响应的 JSON 格式的字符串将 JSON 转为数组 if(userListData) {userListData.forEach(user {if(user.tags) {user.tags JSON.parse(user.tags);}});userList.value userListData;} 查看效果 6. 搜索结果为空的页面展示  引入 Vant 提供的 Empty 组件 参考官方文档Empty 空状态 - Vant 3 (gitee.io) van-empty imagesearch description暂无符合要求的用户 /查看页面效果 附解决跨域问题的几种方式 什么是跨域 浏览器的安全问题仅允许向同协议、同域名、同端口的服务器发送请求前后端交互时有一个不同都会引起跨域 1. 方式一修改域名和端口 将前后端服务的端口修改成一样的比如都是 localhost:8080通过访问路径前缀来转发到不同端口比如访问 /api 就转发到 8080 端口 2. 方式二网关支持Nginx——添加允许跨域配置 proxy_pass在配置文件中添加反向代理$http_origin:是 Nginx 的内置变量设置允许所有域名跨域但是和 * 号有点不同* 不能和下一句的 Access-Control-Allow-Credentials 一起使用Access-Control-Allow-Credentials 设为 true表示允许前端带上 cookie 请求如果请求是预检请求 OPTIONS直接返回成功 204 # 跨域配置 location ^~ /api/ {proxy_pass http://127.0.0.1:8080/api/;add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Methods GET, POST, OPTIONS;add_header Access-Control-Allow-Headers *;if ($request_method OPTIONS) {add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Methods GET, POST, OPTIONS;add_header Access-Control-Allow-Headers DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range;add_header Access-Control-Max-Age 1728000;add_header Content-Type text/plain; charsetutf-8;add_header Content-Length 0;return 204;} } 3. 方式三后端服务支持 SpringBoot 项目直接在接口首部加上注解 CrossOrigin 表示允许跨域即可 后端支持跨域的好处 灵活管理多个前端的不同跨域限制如允许域名 A 的 GET 请求跨域域名 B 的POST 请求跨域 后端统一管理更加安全 前端不用反复写跨域配置
http://www.pierceye.com/news/505444/

相关文章:

  • 腾讯云网站备案流程seo优化实训总结
  • 那个网站有免费的模板wordpress首页模板文件
  • 阿里云主机可以放几个网站手机上自己设计广告的软件
  • 南通公司企业网站建设淘宝网店制作
  • 长沙网站建设推广太仓网站建设企业网站
  • 加强网站微信信息编辑队伍建设网站设计 北京店
  • 广州网站建设有限公司程序员入门先学什么
  • 资源下载类网站如何做外链北京有几家宽带网络公司
  • 个人网站要有什么网页设计与制作初学者教程
  • 宁波品牌网站建设芗城区建设局网站
  • 仿卢松松博客网站源码购买网站空间多少钱
  • 无锡网站推微信公众号文章里好看的图片在哪个网站做
  • 做网站建设费用预算龙岩市建筑设计院
  • 网站做适配多少钱浙江建设厅特种考试查询
  • 简单的网站更新 关键词优化 关键词互联如何做网
  • 重庆网站seo搜索引擎优化网站qq登录 开发
  • 备案号放网站下面居中物流网站制作目的
  • 房产网站排名做情侣网站
  • 营销型网站建设推荐国内团购网站做的最好的是
  • 前端网站建设苏州高新区建设局网站管网
  • 中小企业网站建设中服务器的解决方案是网站建设推广总结
  • 东莞网站建设新闻资讯做赌场网站犯法么
  • wordpress怎么添加单页模版seo价格是多少
  • 网站域名有了_网站如何建设优书网首页
  • 宠物网站建设策划报告Wordpress is文章展示
  • 电子建设网站的目的阿里巴巴网站是用什么技术做的
  • 图形设计网站wordpress微信群多个二维码
  • 网站建设维护是干什么网站用户需求报告
  • 咸宁网站建设公司水网站模板
  • 移动网站开发教材seo网站排名优化价格