当前位置: 首页 > 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 请求跨域 后端统一管理更加安全 前端不用反复写跨域配置 或者编写允许跨域的配置文件推荐 Configuration public class CORSConfig implements WebMvcConfigurer {public void addCorsMappings(CorsRegistry registry) {// 设置允许跨域的路径registry.addMapping(/**)// 设置允许跨域请求的域名.allowedOriginPatterns(*)// 是否允许cookie.allowCredentials(true)// 设置允许的请求方式.allowedMethods(GET, POST, DELETE, PUT)// 设置允许的header属性.allowedHeaders(*)// 跨域允许时间.maxAge(3600);} }
http://www.w-s-a.com/news/54695/

相关文章:

  • 南通seo网站排名优化nginx wordpress rewrite
  • 网站做成软件做内部网站费用
  • 浙江企业网站建设网站域名有了 网站如何建设
  • 学编程哪个机构有权威德州做网站优化
  • 最火的网站开发语言福州网站建设服务商
  • 嘉兴网站制作哪里好asp网站源码免费版
  • 如何给网站配置域名百度网站统计添加网址
  • 搭建wap网站磁力引擎
  • 如何给公司网站做推广个人网站可以做社区吗
  • 网站建设为什么不给源代码大理如何做百度的网站
  • 网站代理违法吗网站备份流程
  • 免费域名查询网站wordpress wordfence
  • h5响应式网站模板制作巴南网站制作
  • 网站方案报价软文什么意思
  • 电子商城网站如何建设上海公司车牌价格
  • 丽江网站设计公司专业公司网站设计企业
  • iis怎么建设网站特色产品推广方案
  • 道路建设网站专题品牌网站建设特色大蝌蚪
  • 网站开发组合 所有组合如何做com的网站
  • 电商网站怎么做的Wordpress 报表的插件
  • 纹理网站推荐买了两台服务器可以做网站吗
  • 机关公文写作网站南宁互联网推广
  • 五指山网站开发价格免费申请网站域名
  • 帝国音乐网站怎么做数据表电脑优化软件
  • 做国外网站收款怎么收建筑人才招聘网站
  • 毕设做桌面端还是网站sns社交网站 建设
  • 建设一个网站需要注意哪些内容wordpress 进销存
  • 沈阳市建设局网站sem优化师是什么意思
  • 餐饮vi设计公司网站排名优化方法讲解
  • 无线昆明官方网站可以做书的网站