久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

全棧工程師之Restful與Spring Boot詳解

 hwjcccn 2017-02-04

上一篇文章App前端,,Web前端,,后端,微信小程序到底該學(xué)啥,?”發(fā)表之后有部分同學(xué)反饋?zhàn)约阂磸氖虑岸?,要么后端,?duì)前后端之間如何交互比較感興趣,,這篇文章就給大家介紹一下后臺(tái)與客戶(hù)端是如何交互的,。

客戶(hù)端與服務(wù)器的交互一般遵循以下原則:跨平臺(tái)、傳輸數(shù)據(jù)格式標(biāo)準(zhǔn),、安全可靠,。目前絕大多數(shù)的App都有android和iOS兩個(gè)版本,因此同樣的數(shù)據(jù),,不同平臺(tái)的客戶(hù)端請(qǐng)求,,返回的結(jié)果應(yīng)該一致,。客戶(hù)端與server之間通信無(wú)非就兩種協(xié)議HTTP和TCP,,然后根據(jù)這兩類(lèi)衍生出其他的通信方式,。TCP的典型場(chǎng)景是server與客戶(hù)端需要保持長(zhǎng)連接,二者進(jìn)行三次握手之后建立連接,,有一方斷開(kāi),,該次連接結(jié)束。

HTTP連接最顯著的特點(diǎn)是客戶(hù)端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),,在請(qǐng)求結(jié)束后,,會(huì)主動(dòng)釋放連接。大部分的客戶(hù)端和server通信采用的是這種方式,,隨著HTTPS的普及,,安全性也越來(lái)越受到重視,后續(xù)我們會(huì)寫(xiě)一篇HTTPS建立連接的過(guò)程,。在網(wǎng)絡(luò)請(qǐng)求調(diào)試的過(guò)程中,,需要經(jīng)常抓包分析報(bào)文是否正確,在這兒推薦Wireshark抓包軟件,,在mac上很好用,,當(dāng)然也有其他工具,建議大家做網(wǎng)絡(luò)請(qǐng)求試著研究一下報(bào)文,,對(duì)網(wǎng)絡(luò)通信能有更深的理解,。

一、Restful框架

Restful架構(gòu),,是目前最流行的一種客戶(hù)端與服務(wù)器交互的架構(gòu),。REST這個(gè)詞,最早是Roy Thomas Fielding在博士論文中提出的,。

REST是Representational State Transfer 的縮寫(xiě),,顧名思義“表現(xiàn)層狀態(tài)轉(zhuǎn)化'。網(wǎng)上有很多關(guān)于這個(gè)詞語(yǔ)的詳細(xì)解釋?zhuān)ㄋ椎闹v:

1)每一個(gè)URI代表一種資源,;

2)客戶(hù)端和服務(wù)器之間,,傳遞這種資源的某種表現(xiàn)層;

3)客戶(hù)端通過(guò)HTTP動(dòng)詞,,對(duì)服務(wù)器端資源進(jìn)行操作,,實(shí)現(xiàn)'表現(xiàn)層狀態(tài)轉(zhuǎn)化'。

Restful無(wú)狀態(tài),,在調(diào)用一個(gè)接口的時(shí)候,,不需要考慮上下文與當(dāng)前狀態(tài),極大的降低了復(fù)雜度,,分離了API結(jié)構(gòu)和邏輯資源,。采用REST架構(gòu)風(fēng)格,,對(duì)于開(kāi)發(fā)、測(cè)試,、運(yùn)維人員來(lái)說(shuō),,都會(huì)更簡(jiǎn)單。當(dāng)然缺點(diǎn)也是有的,,這里不在詳細(xì)闡述。在我們的項(xiàng)目中,,使用REST風(fēng)格完成客戶(hù)端和服務(wù)器json數(shù)據(jù)的交互,。

二、構(gòu)造Restful

我們的服務(wù)器端Restful框架通過(guò)Spring Boot搭建,。Spring Boot也是這兩年很火的微框架,,按照官方的說(shuō)法,Spring Boot使開(kāi)發(fā)獨(dú)立的,,產(chǎn)品級(jí)別的基于Spring的應(yīng)用變得非常簡(jiǎn)單,,為所有的Spring開(kāi)發(fā)提供一個(gè)從根本上更快的和廣泛使用的入門(mén)經(jīng)驗(yàn)。開(kāi)箱即用,,但你可以通過(guò)不采用默認(rèn)設(shè)置來(lái)擺脫這種方式,。提供一系列大型項(xiàng)目常用的非功能性特征(比如,內(nèi)嵌服務(wù)器,,安全,,指標(biāo),健康檢測(cè),,外部化配置),。最重要的是不需要代碼生成及XML配置,省了很多時(shí)間和精力,。

接下來(lái)我們來(lái)創(chuàng)建基于Spring Boot的Restful風(fēng)格的demo,。首先需要準(zhǔn)備好環(huán)境,安裝JDK和MyEclipse,。

全棧工程師之Restful與Spring Boot詳解

我的MyEclipse版本如上圖,,安裝好之后自帶了maven,如果對(duì)maven不了解,,請(qǐng)搜索相關(guān)資料,,了解它的使用方法。

(1)MyEclipse->File->New->Other,選擇Maven Project,,創(chuàng)建demo工程,。

全棧工程師之Restful與Spring Boot詳解

全棧工程師之Restful與Spring Boot詳解

創(chuàng)建完工程后,在我們的目錄下會(huì)看到pom.xml文件,,該文件用于maven構(gòu)建項(xiàng)目,,我們打開(kāi)后編輯此文件,,添加如下內(nèi)容:

全棧工程師之Restful與Spring Boot詳解

全棧工程師之Restful與Spring Boot詳解

然后保存,并右鍵選擇項(xiàng)目->Maven4MyEclipse->Update Project,,加載依賴(lài),,完成后目錄結(jié)構(gòu)如下:

全棧工程師之Restful與Spring Boot詳解

這樣,我們的maven web項(xiàng)目就支持了spring boot,。

三,、基于Spring Boot的Demo

1.首先在配置好Spring Boot依賴(lài)的工程中,新建一個(gè)java類(lèi),,如下,,命名為RestfulDemo:

全棧工程師之Restful與Spring Boot詳解

工程目錄

全棧工程師之Restful與Spring Boot詳解

RestfulDemo類(lèi)

2.接下來(lái)重點(diǎn)講解這個(gè)類(lèi)中的每個(gè)細(xì)節(jié)。

(1)@RestController和@RequestMapping注解

RestfulDemo類(lèi)的上面使用的第一個(gè)注解是@RestController,,它通常被稱(chēng)為一個(gè)構(gòu)造型(stereotype)注解,。RestController本身不是Spring Boot特有的,它繼承自@Controller注解,。Controller用來(lái)標(biāo)識(shí)當(dāng)前類(lèi)是一個(gè)控制器servlet,。在本示例中,我們的類(lèi)是一個(gè)web @Controller,,所以當(dāng)處理進(jìn)來(lái)的web請(qǐng)求時(shí),,Spring會(huì)詢(xún)問(wèn)它。RestController相當(dāng)于@ResponseBody + @Controller,。ResponseBody用于將Controller的方法返回的對(duì)象,,通過(guò)適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后,寫(xiě)入到Response對(duì)象的body數(shù)據(jù)區(qū),,當(dāng)返回的數(shù)據(jù)是json,、xml等時(shí)使用。

(2)@RequestMapping注解

RequestMapping注解主要用來(lái)提供路由信息,,它告訴Spring任何來(lái)自'/'路徑的HTTP請(qǐng)求都應(yīng)該被映射到home方法,。RequestMapping注解有六個(gè)屬性,下面我們把她分成三類(lèi)進(jìn)行說(shuō)明,。

1) value,, method

value: 指定請(qǐng)求的實(shí)際地址;

method:指定請(qǐng)求的method類(lèi)型,, GET,、POST、PUT,、DELETE等,;

2) consumes,produces

consumes: 指定處理請(qǐng)求的提交內(nèi)容類(lèi)型(Content-Type),,例如application/json, text/html;

produces: 指定返回的內(nèi)容類(lèi)型,,僅當(dāng)request請(qǐng)求頭中的(Accept)類(lèi)型中包含該指定類(lèi)型才返回,;

3) params,headers

params: 指定request中必須包含某些參數(shù)值是,,才讓該方法處理,。

headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求,。

(3)@EnableAutoConfiguration注解

EnableAutoConfiguration是Spring Boot根據(jù)我們?cè)趐om中設(shè)置的依賴(lài)自動(dòng)配置spring,。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration默認(rèn)我們?cè)陂_(kāi)發(fā)一個(gè)web應(yīng)用并相應(yīng)地對(duì)Spring進(jìn)行設(shè)置,,當(dāng)然我們也可以手動(dòng)配置,。

(4)SpringApplication類(lèi)

在main方法通過(guò)調(diào)用SpringApplication類(lèi)的run,將業(yè)務(wù)委托給了Spring Boot,,啟動(dòng)Spring,相應(yīng)地啟動(dòng)被自動(dòng)配置的Tomcat web服務(wù)器,。

3.應(yīng)用程序的運(yùn)行

Spring Boot的運(yùn)行有幾種方式,,在這里我介紹兩種。

(1)MyEclipse啟動(dòng)

右鍵單擊RestfulDemo類(lèi)->Run As->Java Application

全棧工程師之Restful與Spring Boot詳解

啟動(dòng)完成

如果看到圖中紅色的提示語(yǔ),,說(shuō)明項(xiàng)目正常啟動(dòng),,此時(shí)在瀏覽器輸入http://localhost:8080/,就能看到“Hello World!”的輸出,。

(2)使用maven命令行啟動(dòng)

當(dāng)前我們的pc如果配置了maven,,也可以在命令行下啟動(dòng)。由于使用了spring-boot-starter-parent的依賴(lài),,這樣我們就有了一個(gè)非常有用的run目標(biāo),。命令行進(jìn)入到工程根目錄,輸入

mvn spring-boot:run來(lái)啟動(dòng)應(yīng)用:

全棧工程師之Restful與Spring Boot詳解

全棧工程師之Restful與Spring Boot詳解

maven會(huì)下載一些依賴(lài),,初始化組件,,最終也會(huì)打印出Tomcat啟動(dòng)成功的信息。

至此,,Spring Boot的Hello World應(yīng)用完美啟動(dòng),,Restful的實(shí)現(xiàn)類(lèi)似我們的demo,由于篇幅過(guò)長(zhǎng),,將在后續(xù)章節(jié)詳細(xì)介紹,。

如果您喜歡我們的文章,點(diǎn)贊就好,,您的認(rèn)可是我分享的最大動(dòng)力,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

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

    類(lèi)似文章 更多