当前位置:首页 > 技术分析 > 正文内容

微服务第39天:搜索页面的请求与响应

ruisui8814小时前技术分析2

今天是刘小爱自学Java的第169天。

感谢你的观看,谢谢你。

学习计划安排如下:

  • 昨天分析并编写了一部分搜索页面的代码。
  • 今天补全发送请求的代码,并完成后台响应。

一、搜索页面发送请求

使用axios发送请求,当然为了后续方便,axios被封装到了自定义的common组件中。

所以后续需要发送请求时,直接使用ly.http即能发送请求,就等价于使用axios一样。

自定义组件中配置了axios的基础请求路径baseURL,所以请求的完整路径是baseURL加上post方法中编写的请求路径。

其中存在有一个跨域问题,目前来说我们一共定义了4个域名:

  • 网关对应的域名:也就是请求的入口。
  • 后台管理系统对应的域名。
  • 关于图片存储对应的域名。
  • 前台门户系统对应的域名

当然这些域名目前都是假的,但是真实的开发中会使用到真的域名。

无论是后台管理系统还是前台门户系统,它们发送请求时都要跨域到网关,所以需要解决跨域问题。

第144天学习笔记中有解决跨域问题的完整方案,我做一个简单的说明:

本来是要使用cors调用api给各个相关属性设定值,但是在springBoot中可以使用yam配置文件说明。

上述就是给各个属性设定了对于的值,核心属性就是allowedOrigins,意味着允许跨域的域名。

因为都是要跨域到网关,所以需要在网关微服务中做好配置。

二、Java后台代码

1请求相关说明

①请求参数

因为请求参数为json数据,所以创建一个实体类SearchRequest和其对应。

在controller层中使用注解@RequestBody将请求参数转换成SearchRequest对象。

其中要注意的是

在后台管理系统中管理人员可以自行设定分页大小,但是在前台门户系统中一般分页大小都会设定好一个固定的值,不会让用户自行决定。

②请求方式和请求路径

Post请求,真实路径为page。

③返回值

为商品分页数据,关于分页实体类很早的时候就配置在了common微服务中。

但凡是需要分页的,直接调用该实体类即可。

2service层代码

①获取请求参数并校验

我们昨天就以京东为例说明过,搜索参数不能为空,如果为空会查不到数据。

key字段虽然在前端也有校验不能为空,但是前端校验只能防君子不能防小人,所以后台最好也要加一个校验。

②原生的查询

queryBuilder这个对象可以链式编程,说明查询相关,api都是以with开头:

  • withPageable()对应分页,PageRequest调用静态方法of()说明分页数据。
  • withQuery()对应搜索条件,QueryBuiders调用静态方法matchQuery说明match匹配。

③搜索查询结果

通过goodsRepository调用search查询,参数即为queryBuilder调用build()方法。

反正这种以Builder为后缀的类,最后要用build()方法结尾。

3关于Repository

Repository本身就是仓库、资源库的意思,其就相当于以前一直接触的mapper层。

只不过在索引库搜索中是使用Repository,继承ElasticsearchRepository接口即可使用了。

上述代码中索引库的原生查询在第162天学习笔记中就详细学过,如果忘记了可以做一个回顾。

至于前端拿到响应的数据后,如何完成页面的渲染就不说明,暂且没时间学完这些。

最后

行有不得反求诸己,我是@刘小爱

一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3820.html

分享给朋友:

“微服务第39天:搜索页面的请求与响应” 的相关文章

vue:组件中之间的传值

一、父子组件之间的传值----props/$emit1、父组件向子组件传值--props2.子组件想父组件传值-this.$emit('select',item)二、父组件向下(深层)子组件传值----provide/injectprovide:Object | () => O...

vue 3 学习笔记 (八)——provide 和 inject 用法及原理

在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传很多次,会很麻烦。像这种情况,可以使用 provide 和 inject 解决这种问题,不论组件嵌套...

继Yuzu后,任天堂要求移除多个Switch模拟器项目

IT之家 7 月 11 日消息,任天堂美国分公司 (Nintendo of America) 已要求移除多个用于模拟 Nintendo Switch 游戏的开源模拟器项目,其中包括 Suyu、Nzu、Uzuy、Torzu、Sudachi 和 Yuzu-vanced 等。这些模拟器均被指控包含绕过任天...

掌握版本控制:Git的那些常见用法与技巧

Git作为现代开发中最常用的版本控制系统,它的普及和高效性使得程序员几乎每天都在与它打交道。无论是个人项目,还是团队协作,Git都能帮助我们追踪代码的修改历史,保证代码版本的管理井井有条,并在多人协作时有效地避免冲突。本文将分享一些常见的Git用法与技巧,帮助你更好地掌握Git的强大功能,并提升你在...

内存问题探微

这篇文章是我在公司 TechDay 上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在 TechDay 上做的分享,四年前第一届 TechDay 不知天高地厚,上去讲了一个《MySQL 最佳实践》,现在想起来那...

Acustica Audio 发布模拟Roland Jupiter 双声道合成器插件 TH2

福利: Acustica Audio 发布模拟Roland Jupiter 风格的双声道合成器插件 TH2 免费下载 意大利 Acustica Audio 公司发布布模拟Roland Jupiter 风格的双声道合成器插件 TH2 ,灵感来源于Acustica Audio的THING-8系列,它是...