专栏首页零基础自学Java【微服务】169:搜索页面的请求与响应

【微服务】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天学习笔记中就详细学过,如果忘记了可以做一个回顾。

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

本文分享自微信公众号 - 刘小爱(liuxiaoai946),作者:刘小爱

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【JavaWeb】95:同步和异步

    如果是同步请求,需要将信息填写完整,再发送请求,服务器响应填写是否正确,再做修改。

    刘小爱
  • 【微服务】146:商品品牌业务后台Java代码编写

    我们以前使用的是jQuery发送ajax请求,但是在Vue中还要引入jQuery不太方便。

    刘小爱
  • 【微服务】148:图片上传业务

    MultipartFile有一个getContentType方法,通过它可以获取上传图片的类型。

    刘小爱
  • 为什么会有OPTIONS请求

    在做项目时,很多时候发送一个post请求,是先发送一个option请求,然后再发送post请求,一直这么用之前也没有仔细思考,今天有时间,好好了解一下为什么会多...

    吴裕超
  • 测试工具Fiddler(三)—— 常见功能介绍

    3、autoresponder: 文件代理:可以使用fiddler来自定义请求返回的文件。

    小菠萝测试笔记
  • 来说说SpringMVC + JSONP的跨域请求

    先来说说场景,JSON,这货大家应该都懂,不懂的请自动面壁思过,那么什么是JSONP,不是JSON放了个P就叫JSONP,而是JSON with Padding...

    风间影月
  • 干货 | 计算密集型服务的负载均衡策略

    罗茂林,携程国际机票后台研发总监,主要负责国际机票引擎的研发工作。致力于系统性能优化和研发效率提升。

    携程技术
  • 小结HTTP状态码

    作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~

    嘉明
  • Python接口测试实战1(下)- 接口

    Fiddler主界面 Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板

    py3study
  • 从http规范角度来看xmlhttprequest发送请求

    最近有点怠工,停更好久,今天分享一篇小白文,原生ajax,看标题肯定不同于其他文章的ajax,而是从http规范角度来看xmlhttprequest发送请求。

    挥刀北上

扫码关注云+社区

领取腾讯云代金券