小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【微服務(wù)】169:搜索頁面的請(qǐng)求與響應(yīng)

 劉小愛v 2020-09-28

今天是劉小愛自學(xué)Java的第169天。

感謝你的觀看,謝謝你。

學(xué)習(xí)計(jì)劃安排如下:

  • 昨天分析并編寫了一部分搜索頁面的代碼。
  • 今天補(bǔ)全發(fā)送請(qǐng)求的代碼,并完成后臺(tái)響應(yīng)。

一、搜索頁面發(fā)送請(qǐng)求

使用axios發(fā)送請(qǐng)求,當(dāng)然為了后續(xù)方便,axios被封裝到了自定義的common組件中。

所以后續(xù)需要發(fā)送請(qǐng)求時(shí),直接使用ly.http即能發(fā)送請(qǐng)求,就等價(jià)于使用axios一樣。

自定義組件中配置了axios的基礎(chǔ)請(qǐng)求路徑baseURL,所以請(qǐng)求的完整路徑是baseURL加上post方法中編寫的請(qǐng)求路徑。

其中存在有一個(gè)跨域問題,目前來說我們一共定義了4個(gè)域名:

  • 網(wǎng)關(guān)對(duì)應(yīng)的域名:也就是請(qǐng)求的入口。
  • 后臺(tái)管理系統(tǒng)對(duì)應(yīng)的域名。
  • 關(guān)于圖片存儲(chǔ)對(duì)應(yīng)的域名。
  • 前臺(tái)門戶系統(tǒng)對(duì)應(yīng)的域名

當(dāng)然這些域名目前都是假的,但是真實(shí)的開發(fā)中會(huì)使用到真的域名。

無論是后臺(tái)管理系統(tǒng)還是前臺(tái)門戶系統(tǒng),它們發(fā)送請(qǐng)求時(shí)都要跨域到網(wǎng)關(guān),所以需要解決跨域問題。

第144天學(xué)習(xí)筆記中有解決跨域問題的完整方案,我做一個(gè)簡(jiǎn)單的說明:

本來是要使用cors調(diào)用api給各個(gè)相關(guān)屬性設(shè)定值,但是在springBoot中可以使用yam配置文件說明。

上述就是給各個(gè)屬性設(shè)定了對(duì)于的值,核心屬性就是allowedOrigins,意味著允許跨域的域名。

因?yàn)槎际且缬虻骄W(wǎng)關(guān),所以需要在網(wǎng)關(guān)微服務(wù)中做好配置。

二、Java后臺(tái)代碼

1請(qǐng)求相關(guān)說明

①請(qǐng)求參數(shù)

因?yàn)檎?qǐng)求參數(shù)為json數(shù)據(jù),所以創(chuàng)建一個(gè)實(shí)體類SearchRequest和其對(duì)應(yīng)。

在controller層中使用注解@RequestBody將請(qǐng)求參數(shù)轉(zhuǎn)換成SearchRequest對(duì)象。

其中要注意的是

在后臺(tái)管理系統(tǒng)中管理人員可以自行設(shè)定分頁大小,但是在前臺(tái)門戶系統(tǒng)中一般分頁大小都會(huì)設(shè)定好一個(gè)固定的值,不會(huì)讓用戶自行決定。

②請(qǐng)求方式和請(qǐng)求路徑

Post請(qǐng)求,真實(shí)路徑為page。

③返回值

為商品分頁數(shù)據(jù),關(guān)于分頁實(shí)體類很早的時(shí)候就配置在了common微服務(wù)中。

但凡是需要分頁的,直接調(diào)用該實(shí)體類即可。

2service層代碼

①獲取請(qǐng)求參數(shù)并校驗(yàn)

我們昨天就以京東為例說明過,搜索參數(shù)不能為空,如果為空會(huì)查不到數(shù)據(jù)。

key字段雖然在前端也有校驗(yàn)不能為空,但是前端校驗(yàn)只能防君子不能防小人,所以后臺(tái)最好也要加一個(gè)校驗(yàn)。

②原生的查詢

queryBuilder這個(gè)對(duì)象可以鏈?zhǔn)骄幊?,說明查詢相關(guān),api都是以with開頭:

  • withPageable()對(duì)應(yīng)分頁,PageRequest調(diào)用靜態(tài)方法of()說明分頁數(shù)據(jù)。
  • withQuery()對(duì)應(yīng)搜索條件,QueryBuiders調(diào)用靜態(tài)方法matchQuery說明match匹配。

③搜索查詢結(jié)果

通過goodsRepository調(diào)用search查詢,參數(shù)即為queryBuilder調(diào)用build()方法。

反正這種以Builder為后綴的類,最后要用build()方法結(jié)尾。

3關(guān)于Repository

Repository本身就是倉庫、資源庫的意思,其就相當(dāng)于以前一直接觸的mapper層。

只不過在索引庫搜索中是使用Repository,繼承ElasticsearchRepository接口即可使用了。

上述代碼中索引庫的原生查詢?cè)?strong style="color: rgb(119, 48, 152);">第162天學(xué)習(xí)筆記中就詳細(xì)學(xué)過,如果忘記了可以做一個(gè)回顧。

至于前端拿到響應(yīng)的數(shù)據(jù)后,如何完成頁面的渲染就不說明,暫且沒時(shí)間學(xué)完這些。

最后

行有不得反求諸己,我是@劉小愛

一個(gè)白天上班晚上學(xué)習(xí)的95后滬漂,不為其它,只為學(xué)會(huì)自律做好自己,也愿我的每日打卡能給你帶來勇氣,歡迎點(diǎn)贊關(guān)注和評(píng)論。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多