国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

哪些專(zhuān)門(mén)做批發(fā)的網(wǎng)站有哪些短網(wǎng)址鏈接生成

哪些專(zhuān)門(mén)做批發(fā)的網(wǎng)站有哪些,短網(wǎng)址鏈接生成,泰州網(wǎng)站建設(shè)案例,蕪湖app開(kāi)發(fā)目錄 一、軟件開(kāi)發(fā)整體介紹 1. 軟件開(kāi)發(fā)流程 1 第1階段: 需求分析 2 第2階段: 設(shè)計(jì) 3 第3階段: 編碼 4 第4階段: 測(cè)試 5 第5階段: 上線運(yùn)維 2. 角色分工 3. 軟件環(huán)境 1 開(kāi)發(fā)環(huán)境(development) 2 測(cè)試環(huán)境(testing) 3 生產(chǎn)環(huán)境(production) 二、蒼穹外賣(mài)項(xiàng)目介紹 …

目錄

一、軟件開(kāi)發(fā)整體介紹

1. 軟件開(kāi)發(fā)流程

1 第1階段: 需求分析

2 第2階段: 設(shè)計(jì)

3 第3階段: 編碼

4 第4階段: 測(cè)試

5 第5階段: 上線運(yùn)維

2. 角色分工

3. 軟件環(huán)境

1 開(kāi)發(fā)環(huán)境(development)

2 測(cè)試環(huán)境(testing)

3 生產(chǎn)環(huán)境(production)

二、蒼穹外賣(mài)項(xiàng)目介紹

1. 項(xiàng)目介紹

2. 產(chǎn)品原型

3. 技術(shù)選型

三、開(kāi)發(fā)環(huán)境搭建

1. 前端環(huán)境搭建

2. 后端環(huán)境搭建

1 熟悉項(xiàng)目結(jié)構(gòu)

1 使用idea打開(kāi)項(xiàng)目

2 項(xiàng)目結(jié)構(gòu)說(shuō)明

2 Git版本控制

1 準(zhǔn)備遠(yuǎn)程倉(cāng)庫(kù)

2 初始化Git本地倉(cāng)庫(kù)

?編輯

3 提交并推送到遠(yuǎn)程倉(cāng)庫(kù)

(2) 添加到暫存區(qū)

(3) 提交到本地倉(cāng)庫(kù)

(4) 推送到遠(yuǎn)程倉(cāng)庫(kù)

3 準(zhǔn)備數(shù)據(jù)庫(kù)環(huán)境

(1) 執(zhí)行SQL腳本

(2)?配置數(shù)據(jù)庫(kù)密碼

(3) 表的說(shuō)明

3. 前后端聯(lián)調(diào)和nginx

1 debug跟蹤登錄功能

2 nginx反向代理

(1) 反向代理介紹

(2) nginx反向代理的好處【重點(diǎn)】

(3) nginx反向代理的配置

(4) nginx負(fù)載均衡的配置

3.3 nginx小結(jié)

4. 完善登錄功能

四、導(dǎo)入接口文檔

五、Swagger

1. 介紹

2. 使用步驟

3. 常用注解

?編輯

4. yapi和Swagger的區(qū)別

5. 小結(jié)


克隆地址:魁(代碼疑點(diǎn))/sky-take-out

一、軟件開(kāi)發(fā)整體介紹

作為一名軟件開(kāi)發(fā)工程師,我們需要了解在軟件開(kāi)發(fā)過(guò)程中的開(kāi)發(fā)流程, 以及軟件開(kāi)發(fā)過(guò)程中涉及到的崗位角色,角色的分工、職責(zé), 并了解軟件開(kāi)發(fā)中涉及到的三種軟件環(huán)境。那么這一小節(jié),我們將從 軟件開(kāi)發(fā)流程、角色分工、軟件環(huán)境 三個(gè)方面整體介紹一下軟件開(kāi)發(fā)。

1. 軟件開(kāi)發(fā)流程

graph LR
需求分析-->設(shè)計(jì)
設(shè)計(jì)-->UI設(shè)計(jì) & 接口設(shè)計(jì) & 數(shù)據(jù)庫(kù)設(shè)計(jì) -->編碼
編碼-->前端編碼-->前端自測(cè)-->聯(lián)調(diào)
編碼-->后端編碼-->后端自測(cè)-->聯(lián)調(diào)
聯(lián)調(diào)-->測(cè)試-->上線運(yùn)維

1 第1階段: 需求分析

完成需求規(guī)格說(shuō)明書(shū)、產(chǎn)品原型編寫(xiě)。

需求規(guī)格說(shuō)明書(shū), 一般來(lái)說(shuō)就是使用 Word 文檔來(lái)描述當(dāng)前項(xiàng)目的各個(gè)組成部分,如:系統(tǒng)定義、應(yīng)用環(huán)境、功能規(guī)格、性能需求等,都會(huì)在文檔中描述。例如:

產(chǎn)品原型,一般是通過(guò)網(wǎng)頁(yè)(html)的形式展示當(dāng)前的頁(yè)面展示什么樣的數(shù)據(jù), 頁(yè)面的布局是什么樣子的,點(diǎn)擊某個(gè)菜單,打開(kāi)什么頁(yè)面,點(diǎn)擊某個(gè)按鈕,出現(xiàn)什么效果,都可以通過(guò)產(chǎn)品原型看到。 例如:

2 第2階段: 設(shè)計(jì)

設(shè)計(jì)的內(nèi)容包含 UI設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、接口設(shè)計(jì)。

UI設(shè)計(jì)

用戶(hù)界面的設(shè)計(jì),主要設(shè)計(jì)項(xiàng)目的頁(yè)面效果,小到一個(gè)按鈕,大到一個(gè)頁(yè)面布局,還有人機(jī)交互邏輯的體現(xiàn)。例如:

數(shù)據(jù)庫(kù)設(shè)計(jì)

需要設(shè)計(jì)當(dāng)前項(xiàng)目中涉及到哪些數(shù)據(jù)庫(kù),每一個(gè)數(shù)據(jù)庫(kù)里面包含哪些表,這些表結(jié)構(gòu)之間的關(guān)系是什么樣的,表結(jié)構(gòu)中包含哪些字段。例如:

接口設(shè)計(jì)

通過(guò)分析原型圖,首先,粗粒度地分析每個(gè)頁(yè)面有多少接口,然后,再細(xì)粒度地分析每個(gè)接口的傳入?yún)?shù),返回值參數(shù),同時(shí)明確接口路徑及請(qǐng)求方式

3 第3階段: 編碼

編寫(xiě)項(xiàng)目代碼、并完成單元測(cè)試。

項(xiàng)目代碼編寫(xiě):作為軟件開(kāi)發(fā)工程師,我們需要對(duì)項(xiàng)目的模塊功能分析后,進(jìn)行編碼實(shí)現(xiàn)。

單元測(cè)試:編碼實(shí)現(xiàn)完畢后,進(jìn)行單元測(cè)試,單元測(cè)試通過(guò)后再進(jìn)入到下一階段。例如:

4 第4階段: 測(cè)試

在該階段中主要由測(cè)試人員, 編寫(xiě)測(cè)試用例, 對(duì)部署在測(cè)試環(huán)境的項(xiàng)目進(jìn)行功能測(cè)試, 并出具測(cè)試報(bào)告。

5 第5階段: 上線運(yùn)維

在項(xiàng)目上線之前, 會(huì)由運(yùn)維人員準(zhǔn)備服務(wù)器上的軟件環(huán)境安裝、配置, 配置完畢后, 再將我們開(kāi)發(fā)好的項(xiàng)目,部署在服務(wù)器上運(yùn)行。

2. 角色分工

在對(duì)整個(gè)軟件開(kāi)發(fā)流程熟悉后, 我們還有必要了解一下在整個(gè)軟件開(kāi)發(fā)流程中涉及到的崗位角色,以及各個(gè)角色的職責(zé)分工。

在實(shí)際的項(xiàng)目中, 有一些項(xiàng)目組由于人員配置緊張, 可能并沒(méi)有專(zhuān)門(mén)的架構(gòu)師或測(cè)試人員, 這個(gè)時(shí)候可能需要有項(xiàng)目經(jīng)理或者程序員兼任

????????

3. 軟件環(huán)境

作為軟件開(kāi)發(fā)工程師,在編碼的過(guò)程中就不可避免地會(huì)接觸多種軟件環(huán)境,我們主要來(lái)分析在工作中經(jīng)常遇到的三套環(huán)境, 分別是: 開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境。 接下來(lái),我們分別介紹一下這三套環(huán)境的作用和特點(diǎn)。

1 開(kāi)發(fā)環(huán)境(development)

我們作為軟件開(kāi)發(fā)人員,在開(kāi)發(fā)階段使用的環(huán)境,就是開(kāi)發(fā)環(huán)境,一般外部用戶(hù)無(wú)法訪問(wèn)。

比如,我們?cè)陂_(kāi)發(fā)中使用的MySQL數(shù)據(jù)庫(kù)和其他的一些常用軟件,我們可以安裝在本地, 也可以安裝在一臺(tái)專(zhuān)門(mén)的服務(wù)器中, 這些應(yīng)用軟件僅僅在軟件開(kāi)發(fā)過(guò)程中使用, 項(xiàng)目測(cè)試、上線時(shí),我們不會(huì)使用這套環(huán)境了,這個(gè)環(huán)境就是開(kāi)發(fā)環(huán)境。

2 測(cè)試環(huán)境(testing)

當(dāng)軟件開(kāi)發(fā)工程師,將項(xiàng)目的功能模塊開(kāi)發(fā)完畢,并且單元測(cè)試通過(guò)后,就需要將項(xiàng)目部署到測(cè)試服務(wù)器上,讓測(cè)試人員對(duì)項(xiàng)目進(jìn)行測(cè)試。那這臺(tái)測(cè)試服務(wù)器就是專(zhuān)門(mén)給測(cè)試人員使用的環(huán)境, 也就是測(cè)試環(huán)境,用于項(xiàng)目測(cè)試,一般外部用戶(hù)無(wú)法訪問(wèn)。

3 生產(chǎn)環(huán)境(production)

當(dāng)項(xiàng)目開(kāi)發(fā)完畢,并且由測(cè)試人員測(cè)試通過(guò)之后,就可以上線項(xiàng)目,將項(xiàng)目部署到線上環(huán)境,并正式對(duì)外提供服務(wù),這個(gè)線上環(huán)境也稱(chēng)之為生產(chǎn)環(huán)境。

application-dev.yaml:配置 開(kāi)發(fā)環(huán)境的各種參數(shù),比如開(kāi)發(fā)環(huán)境的數(shù)據(jù)庫(kù)地址

application-test.yaml:配置 測(cè)試環(huán)境的各種參數(shù),比如測(cè)試環(huán)境的數(shù)據(jù)庫(kù)地址

application.prod.yaml:配置 生產(chǎn)環(huán)境的各種參數(shù),比如生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)地址

程序部署到哪個(gè)環(huán)境,就激活對(duì)應(yīng)的配置文件:

  • java -jar -Dspring.profiles.active=dev xxx.jar 啟動(dòng)程序并激活dev環(huán)境的配置

二、蒼穹外賣(mài)項(xiàng)目介紹

到公司里邊,需要給你提供 遠(yuǎn)程倉(cāng)庫(kù)的地址、并給你的git帳號(hào)開(kāi)通權(quán)限。如果沒(méi)有權(quán)限,是不能克隆的

獲取本地倉(cāng)庫(kù):

  • 克隆遠(yuǎn)程倉(cāng)庫(kù),得到本地倉(cāng)庫(kù)。 這種倉(cāng)庫(kù)里邊已經(jīng)包含了 遠(yuǎn)程倉(cāng)庫(kù)的地址信息

  • 本地初始化倉(cāng)庫(kù),這種倉(cāng)庫(kù)沒(méi)有關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù),需要添加遠(yuǎn)程倉(cāng)庫(kù)的信息 git remote add 簡(jiǎn)稱(chēng)代號(hào) 地址

切換分支,在分支里編寫(xiě)代碼:

  • 開(kāi)發(fā)中,通常是要完成一個(gè)功能,就先拉取一個(gè)分支;要修改一個(gè)bug,需要先拉取一個(gè)分支

  • 在分支里編寫(xiě)代碼并提交,可以推送

  • 把分支代碼合并到 主開(kāi)發(fā)分支

推送到遠(yuǎn)程倉(cāng)庫(kù):

  • 推送到遠(yuǎn)程倉(cāng)庫(kù):git push origin 分支名

  • 獲取最新的代碼:git pull origin 分支名

1. 項(xiàng)目介紹

本項(xiàng)目(蒼穹外賣(mài))是專(zhuān)門(mén)為餐飲企業(yè)(餐廳、飯店)定制的一款軟件產(chǎn)品,包括 系統(tǒng)管理后臺(tái) 和 小程序端應(yīng)用 兩部分。其中系統(tǒng)管理后臺(tái)主要提供給餐飲企業(yè)內(nèi)部員工使用,可以對(duì)餐廳的分類(lèi)、菜品、套餐、訂單、員工等進(jìn)行管理維護(hù),對(duì)餐廳的各類(lèi)數(shù)據(jù)進(jìn)行統(tǒng)計(jì),同時(shí)也可進(jìn)行來(lái)單語(yǔ)音播報(bào)功能。小程序端主要提供給消費(fèi)者使用,可以在線瀏覽菜品、添加購(gòu)物車(chē)、下單、支付、催單等。

接下來(lái),通過(guò)功能架構(gòu)圖來(lái)展示管理端用戶(hù)端的具體業(yè)務(wù)功能模塊。

1. 管理端功能

員工登錄/退出 , 員工信息管理 , 分類(lèi)管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 訂單管理 ,數(shù)據(jù)統(tǒng)計(jì),來(lái)單提醒。

2. 用戶(hù)端功能

微信登錄 , 收件人地址管理 , 用戶(hù)歷史訂單查詢(xún) , 菜品規(guī)格查詢(xún) , 購(gòu)物車(chē)功能 , 下單 , 支付、分類(lèi)及菜品瀏覽。

2. 產(chǎn)品原型

產(chǎn)品原型,用于展示項(xiàng)目的業(yè)務(wù)功能,一般由產(chǎn)品經(jīng)理進(jìn)行設(shè)計(jì)。

注意事項(xiàng): 產(chǎn)品原型主要用于展示項(xiàng)目的功能,并不是最終的頁(yè)面效果。

1. 管理端

餐飲企業(yè)內(nèi)部員工使用。 主要功能有:

2. 用戶(hù)端

移動(dòng)端應(yīng)用主要提供給消費(fèi)者使用。主要功能有:

3. 技術(shù)選型

關(guān)于本項(xiàng)目的技術(shù)選型, 我們將會(huì)從 用戶(hù)層、網(wǎng)關(guān)層、應(yīng)用層、數(shù)據(jù)層 這幾個(gè)方面進(jìn)行介紹,主要用于展示項(xiàng)目中使用到的技術(shù)框架和中間件等。

1). 用戶(hù)層

本項(xiàng)目中在構(gòu)建系統(tǒng)管理后臺(tái)的前端頁(yè)面,我們會(huì)用到H5、Vue.js、ElementUI、apache echarts(展示圖表)等技術(shù)。而在構(gòu)建移動(dòng)端應(yīng)用時(shí),我們會(huì)使用到微信小程序。

2). 網(wǎng)關(guān)層

Nginx是一個(gè)服務(wù)器,主要用來(lái)作為Http服務(wù)器,部署靜態(tài)資源,訪問(wèn)性能高。在Nginx中還有兩個(gè)比較重要的作用: 反向代理和負(fù)載均衡, 在進(jìn)行項(xiàng)目部署時(shí),要實(shí)現(xiàn)Tomcat的負(fù)載均衡,就可以通過(guò)Nginx來(lái)實(shí)現(xiàn)。

3). 應(yīng)用層

SpringBoot: 快速構(gòu)建Spring項(xiàng)目, 采用 "約定優(yōu)于配置" 的思想, 簡(jiǎn)化Spring項(xiàng)目的配置開(kāi)發(fā)。

SpringMVC:SpringMVC是spring框架的一個(gè)模塊,springmvc和spring無(wú)需通過(guò)中間整合層進(jìn)行整合,可以無(wú)縫集成。

Spring Task: 由Spring提供的定時(shí)任務(wù)框架。

httpclient: 主要實(shí)現(xiàn)了對(duì)http請(qǐng)求的發(fā)送。

Spring Cache: 由Spring提供的數(shù)據(jù)緩存框架

JWT: 用于對(duì)應(yīng)用程序上的用戶(hù)進(jìn)行身份驗(yàn)證的標(biāo)記。

阿里云OSS: 對(duì)象存儲(chǔ)服務(wù),在項(xiàng)目中主要存儲(chǔ)文件,如圖片等。

Swagger: 可以自動(dòng)的幫助開(kāi)發(fā)人員生成接口文檔,并對(duì)接口進(jìn)行測(cè)試。

POI: 封裝了對(duì)Excel表格的常用操作。

WebSocket: 一種通信網(wǎng)絡(luò)協(xié)議,使客戶(hù)端和服務(wù)器之間的數(shù)據(jù)交換更加簡(jiǎn)單,用于項(xiàng)目的來(lái)單、催單功能實(shí)現(xiàn)。

4). 數(shù)據(jù)層

MySQL: 關(guān)系型數(shù)據(jù)庫(kù), 本項(xiàng)目的核心業(yè)務(wù)數(shù)據(jù)都會(huì)采用MySQL進(jìn)行存儲(chǔ)。

Redis: 基于key-value格式存儲(chǔ)的內(nèi)存數(shù)據(jù)庫(kù), 訪問(wèn)速度快, 經(jīng)常使用它做緩存。

Mybatis: 本項(xiàng)目持久層將會(huì)使用Mybatis開(kāi)發(fā)。

pagehelper: 分頁(yè)插件。

spring data redis: 簡(jiǎn)化java代碼操作Redis的API。

5). 工具

git: 版本控制工具, 在團(tuán)隊(duì)協(xié)作中, 使用該工具對(duì)項(xiàng)目中的代碼進(jìn)行管理。

maven: 項(xiàng)目構(gòu)建工具。

junit:單元測(cè)試工具,開(kāi)發(fā)人員功能實(shí)現(xiàn)完畢后,需要通過(guò)junit對(duì)功能進(jìn)行單元測(cè)試。

postman: 接口測(cè)工具,模擬用戶(hù)發(fā)起的各類(lèi)HTTP請(qǐng)求,獲取對(duì)應(yīng)的響應(yīng)結(jié)果。

三、開(kāi)發(fā)環(huán)境搭建

開(kāi)發(fā)環(huán)境搭建主要包含前端環(huán)境后端環(huán)境兩部分。作為服務(wù)端開(kāi)發(fā)工程師, 我們課程學(xué)習(xí)的重心應(yīng)該放在后端的業(yè)務(wù)代碼上, 前端的頁(yè)面我們只需要導(dǎo)入資料中的nginx, 前端頁(yè)面的代碼我們只需要能看懂即可。

1. 前端環(huán)境搭建

1). 前端工程基于 nginx

從資料中找到前端運(yùn)行環(huán)境的nginx,移動(dòng)到非中文目錄下。

sky目錄中存放了管理端的前端資源,具體如下:

2). 啟動(dòng)nginx,訪問(wèn)測(cè)試

雙擊 nginx.exe 即可啟動(dòng) nginx 服務(wù),訪問(wèn)端口號(hào)為 80

http://localhost:80

2. 后端環(huán)境搭建

1 熟悉項(xiàng)目結(jié)構(gòu)

1 使用idea打開(kāi)項(xiàng)目

后端工程基于 maven 進(jìn)行項(xiàng)目構(gòu)建,并且進(jìn)行分模塊開(kāi)發(fā)。

1). 從當(dāng)天資料中找到后端初始工程:

2). 用 IDEA 打開(kāi)初始工程,了解項(xiàng)目的整體結(jié)構(gòu):

2 項(xiàng)目結(jié)構(gòu)說(shuō)明

對(duì)工程的每個(gè)模塊作用說(shuō)明:

對(duì)項(xiàng)目整體結(jié)構(gòu)了解后,接下來(lái)我們?cè)敿?xì)分析上述的每個(gè)子模塊:

sky-common模塊

模塊中存放的是一些公共類(lèi),可以供其他模塊使用

分析sky-common模塊的每個(gè)包的作用:

sky-pojo模塊

模塊中存放的是一些 entity、DTO、VO

分析sky-pojo模塊的每個(gè)包的作用:

sky-server模塊

模塊中存放的是 配置文件、配置類(lèi)、攔截器、controller、service、mapper、啟動(dòng)類(lèi)等

2 Git版本控制

1 準(zhǔn)備遠(yuǎn)程倉(cāng)庫(kù)

1.訪問(wèn)Gitee - 基于 Git 的代碼托管和研發(fā)協(xié)作平臺(tái),新建倉(cāng)庫(kù)

2 初始化Git本地倉(cāng)庫(kù)

3 提交并推送到遠(yuǎn)程倉(cāng)庫(kù)

1) 準(zhǔn)備忽略文件

(2) 添加到暫存區(qū)

右鍵模塊? --? Git -- Add

(3) 提交到本地倉(cāng)庫(kù)

(4) 推送到遠(yuǎn)程倉(cāng)庫(kù)

成功推送至遠(yuǎn)程倉(cāng)庫(kù)

3 準(zhǔn)備數(shù)據(jù)庫(kù)環(huán)境

(1) 執(zhí)行SQL腳本

今天的資料中有數(shù)據(jù)庫(kù)腳本:

sql文件,到數(shù)據(jù)庫(kù)執(zhí)行

(2)?配置數(shù)據(jù)庫(kù)密碼

yml配置文件修改本地?cái)?shù)據(jù)庫(kù)賬戶(hù)和密碼

(3) 表的說(shuō)明

3. 前后端聯(lián)調(diào)和nginx

1 debug跟蹤登錄功能

后端的初始工程中已經(jīng)實(shí)現(xiàn)了登錄功能,直接進(jìn)行前后端聯(lián)調(diào)測(cè)試即可

實(shí)現(xiàn)思路:

2 nginx反向代理

對(duì)登錄功能測(cè)試完畢后,接下來(lái),我們思考一個(gè)問(wèn)題:前端發(fā)送的請(qǐng)求,是如何請(qǐng)求到后端服務(wù)的?

前端請(qǐng)求地址:http://localhost/api/employee/login

后端接口地址:http://localhost:8080/admin/employee/login

很明顯,兩個(gè)地址不一致,那是如何請(qǐng)求到后端服務(wù)的呢?

nginx介紹

nginx:Engine X,俄羅斯人開(kāi)發(fā)的一個(gè)軟件,早期作為郵件收發(fā)的服務(wù)器代理。隨著后來(lái)的發(fā)展,也提供了其它的功能:

  • 部署靜態(tài)資源,供客戶(hù)端訪問(wèn)

  • 作為反向代理服務(wù)器,實(shí)現(xiàn)負(fù)載均衡

  • 作為郵件收發(fā)的服務(wù)器

(1) 反向代理介紹

nginx 反向代理,就是將前端發(fā)送的動(dòng)態(tài)請(qǐng)求由 nginx 轉(zhuǎn)發(fā)到后端服務(wù)器

那為什么不直接通過(guò)瀏覽器直接請(qǐng)求后臺(tái)服務(wù)端,需要通過(guò)nginx反向代理呢?

(2) nginx反向代理的好處【重點(diǎn)】
  • 提高訪問(wèn)速度

    因?yàn)閚ginx本身可以進(jìn)行緩存,如果訪問(wèn)的同一接口,并且做了數(shù)據(jù)緩存,nginx就直接可把數(shù)據(jù)返回,不需要真正地訪問(wèn)服務(wù)端,從而提高訪問(wèn)速度。

  • 進(jìn)行負(fù)載均衡

    所謂負(fù)載均衡,就是把大量的請(qǐng)求按照我們指定的方式均衡的分配給集群中的每臺(tái)服務(wù)器。

  • 保證后端服務(wù)安全

    因?yàn)橐话愫笈_(tái)服務(wù)地址不會(huì)暴露,所以使用瀏覽器不能直接訪問(wèn),可以把nginx作為請(qǐng)求訪問(wèn)的入口,請(qǐng)求到達(dá)nginx后轉(zhuǎn)發(fā)到具體的服務(wù)中,從而保證后端服務(wù)的安全。

(3) nginx反向代理的配置

nginx 反向代理的配置方式:

server{listen 80;server_name localhost;location /api/{proxy_pass http://localhost:8080/admin/; #反向代理}
}

proxy_pass:該指令是用來(lái)設(shè)置代理服務(wù)器的地址,可以是主機(jī)名稱(chēng),IP地址加端口號(hào)等形式。

如上代碼的含義是:監(jiān)聽(tīng)80端口號(hào), 然后當(dāng)我們?cè)L問(wèn) http://localhost:80/api/../..這樣的接口的時(shí)候,它會(huì)通過(guò) location /api/ {} 這樣的反向代理到 http://localhost:8080/admin/上來(lái)。

# 反向代理,處理管理端發(fā)送的請(qǐng)求
location /api/ {proxy_pass   http://localhost:8080/admin/;#proxy_pass   http://webservers/admin/;
}

當(dāng)在訪問(wèn)http://localhost/api/employee/login,nginx接收到請(qǐng)求后轉(zhuǎn)到http://localhost:8080/admin/,故最終的請(qǐng)求地址為http://localhost:8080/admin/employee/login,和后臺(tái)服務(wù)的訪問(wèn)地址一致。

(4) nginx負(fù)載均衡的配置

當(dāng)如果服務(wù)以集群的方式進(jìn)行部署時(shí),那nginx在轉(zhuǎn)發(fā)請(qǐng)求到服務(wù)器時(shí)就需要做相應(yīng)的負(fù)載均衡。其實(shí),負(fù)載均衡從本質(zhì)上來(lái)說(shuō)也是基于反向代理來(lái)實(shí)現(xiàn)的,最終都是轉(zhuǎn)發(fā)請(qǐng)求。

nginx 負(fù)載均衡的配置方式:

upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;
}
server{listen 80;server_name localhost;location /api/{proxy_pass http://webservers/admin;#負(fù)載均衡}
}

upstream:如果代理服務(wù)器是一組服務(wù)器的話(huà),我們可以使用upstream指令配置后端服務(wù)器組。

如上代碼的含義是:監(jiān)聽(tīng)80端口號(hào), 然后當(dāng)我們?cè)L問(wèn) http://localhost:80/api/../..這樣的接口的時(shí)候,它會(huì)通過(guò) location /api/ {} 這樣的反向代理到 http://webservers/admin,根據(jù)webservers名稱(chēng)找到一組服務(wù)器,根據(jù)設(shè)置的負(fù)載均衡策略(默認(rèn)是輪詢(xún))轉(zhuǎn)發(fā)到具體的服務(wù)器。

注:upstream后面的名稱(chēng)可自定義,但要上下保持一致。

nginx 負(fù)載均衡策略:

輪詢(xún):

輪詢(xún):

 ? ?upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;}

weight:

upstream webservers{server 192.168.100.128:8080 weight=9;server 192.168.100.129:8080 weight=1;
}

ip_hash:

upstream webservers{ip_hash;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

least_conn:

upstream webservers{least_conn;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

url_hash:

upstream webservers{hash &request_uri;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

fair:

upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;fair;
}

正向代理:指客戶(hù)端的代理,服務(wù)端不知道(無(wú)感知的)=>VPN翻(非法)

反向代理;指服務(wù)端的代理,客戶(hù)端不知道(無(wú)感知的)

3.3 nginx小結(jié)

nginx的作用:

  • 部署靜態(tài)資源,作為靜態(tài)資源服務(wù)器

  • 作為反向代理,實(shí)現(xiàn)負(fù)載均衡

nginx要部署靜態(tài)資源:把靜態(tài)資源直接放到nginx的html目錄里

nginx要作為反向代理,并實(shí)現(xiàn)負(fù)載均衡:要修改nginx.conf

nginx負(fù)載均衡策略:

  • 輪詢(xún):默認(rèn)策略,不配置負(fù)載均衡策略就是輪詢(xún)。把請(qǐng)求輪流分發(fā)到不同的目標(biāo)服務(wù)器上

  • weith:權(quán)重模式,給每個(gè)目標(biāo)服務(wù)器設(shè)置權(quán)重值,值越大,被分發(fā)到請(qǐng)求的機(jī)率就越高

  • ip_hash:ip哈希,相同ip的客戶(hù)端的請(qǐng)求,始終被分配到某一臺(tái)服務(wù)器上

  • url_hash:url哈希,相同請(qǐng)求路徑url的請(qǐng)求,始終被分配到某一臺(tái)服務(wù)器上

  • least_conn:最少連接,哪個(gè)服務(wù)器正在處理的請(qǐng)求少,就分配到哪個(gè)服務(wù)器上

  • fair:公平模式,哪個(gè)服務(wù)器響應(yīng)時(shí)間短,說(shuō)明服務(wù)器性能好,就多處理一些請(qǐng)求

4. 完善登錄功能

數(shù)據(jù)不允許存取名文密碼,安全不達(dá)標(biāo)

使用MD5算法對(duì)明文密碼加密

注意:MD5算法,不是加密算法,是數(shù)據(jù)摘要算法。在計(jì)算轉(zhuǎn)換過(guò)程中,會(huì)丟棄一部分原始數(shù)據(jù)。

特點(diǎn):

  • 不可逆。有密文,不可能通過(guò)算法還原出來(lái)明文

  • 一個(gè)明文 經(jīng)過(guò)MD5計(jì)算的結(jié)果,總是不變的

所以:MD5不可逆,但并不是不可破解。破解的方式:準(zhǔn)備彩虹表,就是 常用明文密碼和對(duì)應(yīng)的MD5結(jié)果

將來(lái):會(huì)使用 MD5 + 鹽 進(jìn)一步提升安全性,提升破解的難度

  1. 修改數(shù)據(jù)庫(kù)中明文密碼,改為MD5加密后的密文

    打開(kāi)employee表,修改密碼。明文密碼123456,對(duì)應(yīng)的md5值是:e10adc3949ba59abbe56e057f20f883e

  2. 修改Java代碼,前端提交的密碼進(jìn)行MD5加密后再跟數(shù)據(jù)庫(kù)中密碼比對(duì)

    打開(kāi)EmployeeServiceImpl.java,修改比對(duì)密碼

四、導(dǎo)入接口文檔

前后端分離

將課程資料中提供的項(xiàng)目接口導(dǎo)入YApi。訪問(wèn)地址:【YApi非常慢】YApi Pro-高效、易用、功能強(qiáng)大的可視化接口管理平臺(tái),注冊(cè)帳號(hào)并登錄

選擇蒼穹外賣(mài)-管理端接口.json導(dǎo)入

五、Swagger

1. 介紹

Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)(API Documentation & Design Tools for Teams | Swagger)。 它的主要作用是:

  1. 使得前后端分離開(kāi)發(fā)更加方便,有利于團(tuán)隊(duì)協(xié)作。

  2. 接口的文檔在線自動(dòng)生成,降低后端開(kāi)發(fā)人員編寫(xiě)接口文檔的負(fù)擔(dān)。

    如果開(kāi)發(fā)中接口和早期設(shè)計(jì)的接口不同,不需要花很多時(shí)間重新編寫(xiě)接口文檔,Swagger會(huì)根據(jù)代碼直接生成接口文檔

  3. 功能測(cè)試

    Spring已經(jīng)將Swagger納入自身的標(biāo)準(zhǔn),建立了Spring-swagger項(xiàng)目,現(xiàn)在叫Springfox。通過(guò)在項(xiàng)目中引入Springfox ,即可非常簡(jiǎn)單快捷的使用Swagger。

knife4j是為Java MVC框架集成Swagger生成Api文檔的增強(qiáng)解決方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一樣小巧,輕量,并且功能強(qiáng)悍!

目前,一般都使用knife4j框架。

2. 使用步驟

  1. 導(dǎo)入 knife4j 的maven坐標(biāo)

    在sky-pojo模塊的pom.xml中添加依賴(lài)已添加

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>

在配置類(lèi)中加入 knife4j 相關(guān)配置

在sky-server模塊中找到配置類(lèi)com.sky.config.WebMvcConfiguration,添加內(nèi)容:

/*** 通過(guò)knife4j生成接口文檔* @return
*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("蒼穹外賣(mài)項(xiàng)目接口文檔").version("2.0").description("蒼穹外賣(mài)項(xiàng)目接口文檔").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;}/*** 設(shè)置靜態(tài)資源映射* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

訪問(wèn)測(cè)試

接口文檔訪問(wèn)路徑為 http://ip:port/doc.html ---> http://localhost:8080/doc.html

思考:通過(guò) Swagger 就可以生成接口文檔,那么我們就不需要 Yapi 了?

1、Yapi 是設(shè)計(jì)階段使用的工具,管理和維護(hù)接口

2、Swagger 在開(kāi)發(fā)階段使用的框架,幫助后端開(kāi)發(fā)人員做后端的接口測(cè)試

3. 常用注解

通過(guò)注解可以控制生成的接口文檔,使接口文檔擁有更好的可讀性,常用注解如下:

補(bǔ)充:參數(shù)不是實(shí)參類(lèi):在形參上加 @ApiParam("參數(shù)描述")

//實(shí)體類(lèi)
@ApiModel(description = "員工登錄時(shí)傳遞的數(shù)據(jù)模型")
public class EmployeeLoginDTO implements Serializable {}//實(shí)體類(lèi)
@ApiModel(description = "員工登錄返回的數(shù)據(jù)格式")
public class EmployeeLoginVO implements Serializable {//實(shí)體類(lèi)的變量@ApiModelProperty("主鍵值")private Long id;@ApiModelProperty("用戶(hù)名")private String userName;@ApiModelProperty("姓名")private String name;@ApiModelProperty("jwt令牌")private String token;}--------------------------//Controller類(lèi)
@Api(tags = "員工相關(guān)接口")
public class EmployeeController {//Controller類(lèi)類(lèi)里的方法@ApiOperation("員工退出")public Result<String> logout() {}}

在啟動(dòng)服務(wù):訪問(wèn)http://localhost:8080/doc.html

4. yapi和Swagger的區(qū)別

兩者的共同點(diǎn):都是API接口文檔

不同點(diǎn):

  • YApi側(cè)重于功能開(kāi)發(fā)之前,設(shè)置API接口;Swagger側(cè)重于功能實(shí)現(xiàn)之后,生成接口文檔

  • YApi僅僅是設(shè)計(jì)接口,可以給前端用于Mock測(cè)試;Swagger可以給后端開(kāi)發(fā)人員,用于功能測(cè)試

5. 小結(jié)

項(xiàng)目如果整合了Swagger,在開(kāi)發(fā)中需要添加注解:

  • Controller類(lèi)上加注解 @Api(tags="Controller類(lèi)的描述")

  • Controller類(lèi)里方法上加注解 @ApiOperation("方法的描述")

  • Controller類(lèi)里方法參數(shù):

    • 參數(shù)是實(shí)體類(lèi)

      實(shí)體類(lèi)上加 @ApiModel(decription="實(shí)體類(lèi)的描述")

      類(lèi)里的各種屬性上加 @ApiModelProperty("屬性的描述")

    • 參數(shù)不是實(shí)參類(lèi):在形參上加 @ApiParam("參數(shù)描述")

Swagger會(huì)根據(jù)我們代碼里配置的注解,自動(dòng)生成接口文檔;也可以直接進(jìn)行功能測(cè)試

http://aloenet.com.cn/news/31352.html

相關(guān)文章:

  • 網(wǎng)站制作文案杭州長(zhǎng)治seo顧問(wèn)
  • seo發(fā)布網(wǎng)站某網(wǎng)站搜索引擎優(yōu)化
  • 網(wǎng)站開(kāi)發(fā)包含上線嗎網(wǎng)絡(luò)營(yíng)銷(xiāo)的六大功能
  • wordpress網(wǎng)站例昆明網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 在國(guó)外做盜版電影網(wǎng)站嗎seo發(fā)帖工具
  • 做內(nèi)貿(mào)的網(wǎng)站武漢網(wǎng)站設(shè)計(jì)十年樂(lè)云seo
  • 做網(wǎng)站需要備案么長(zhǎng)沙seo培訓(xùn)班
  • 撫順市城市建設(shè)檔案館網(wǎng)站安卓?jī)?yōu)化大師新版
  • 做平臺(tái)網(wǎng)站外包多少錢(qián)啊常見(jiàn)的網(wǎng)絡(luò)營(yíng)銷(xiāo)方式有哪幾種
  • 京東網(wǎng)上購(gòu)物平臺(tái)如何快速優(yōu)化網(wǎng)站排名
  • 網(wǎng)站制作方案書(shū)博客網(wǎng)
  • 訂閱號(hào)欄目里做微網(wǎng)站網(wǎng)站排名靠前
  • 網(wǎng)絡(luò)營(yíng)銷(xiāo)專(zhuān)業(yè)建議百度seo優(yōu)化收費(fèi)標(biāo)準(zhǔn)
  • 兩學(xué)一做教育考試網(wǎng)站微信小程序怎么開(kāi)通
  • WordPress微信密碼seo初級(jí)入門(mén)教程
  • 物聯(lián)網(wǎng)型網(wǎng)站開(kāi)發(fā)企業(yè)網(wǎng)站建設(shè)服務(wù)
  • 做網(wǎng)站買(mǎi)域名網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃方案3000字
  • 建筑室內(nèi)設(shè)計(jì)公司排名seo人工智能
  • 中國(guó)建設(shè)門(mén)戶(hù)網(wǎng)站紀(jì)念幣看seo
  • 做網(wǎng)站一般收取多少錢(qián)國(guó)際重大新聞
  • 深圳市城鄉(xiāng)和建設(shè)局網(wǎng)站首頁(yè)貼吧推廣
  • 有沒(méi)有免費(fèi)的網(wǎng)站推銷(xiāo)產(chǎn)品如何做網(wǎng)絡(luò)推廣
  • 成都市 網(wǎng)站建設(shè)福州短視頻seo公司
  • 深圳有做網(wǎng)站公司打廣告去哪個(gè)平臺(tái)
  • 深圳手機(jī)網(wǎng)站制作公司全網(wǎng)搜索軟件
  • 一個(gè)人能建設(shè)一個(gè)公司網(wǎng)站嗎短視頻seo是什么
  • 南山網(wǎng)站建設(shè)網(wǎng)絡(luò)營(yíng)銷(xiāo)培訓(xùn)
  • 網(wǎng)站建設(shè)經(jīng)理網(wǎng)站關(guān)鍵詞在哪里看
  • 福建交通建設(shè)網(wǎng)站58黃頁(yè)網(wǎng)推廣公司
  • 桂林哪里可以做網(wǎng)站百度推廣區(qū)域代理