掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在本教程中,你將會(huì)使用Spring來創(chuàng)建一個(gè)具有生產(chǎn)力的RESTful網(wǎng)絡(luò)服務(wù)。

10年積累的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有碧江免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
為什么用RESTful網(wǎng)絡(luò)服務(wù)?
從和Amazon Web Services的整合,到聚合多個(gè)數(shù)據(jù)源,RESTful網(wǎng)絡(luò)服務(wù)遵從了Roy Fielding的架構(gòu)風(fēng)格的指導(dǎo)方針,提供了簡單、高效的web APIs,支持的API用戶數(shù)量從少量到***別。
你要實(shí)現(xiàn)一個(gè)RESTful風(fēng)格的網(wǎng)絡(luò)服務(wù),可能會(huì)是因?yàn)?
或者你只是出于好奇想看看Spring實(shí)現(xiàn)的RESTful網(wǎng)絡(luò)服務(wù)長什么樣子。不管處于什么原因,你找對地方了。
你將創(chuàng)建什么
Yummy Noodle Bar(美味面條吧)正在全球化。它想要給一系列商務(wù)聚合組織提供一個(gè)RESTful Web服務(wù),特別是Let’s Nosh(讓我們來點(diǎn)小吃),一個(gè)受歡迎的餐廳指南,它將大型商務(wù)引入小規(guī)模的面條吧。你將擴(kuò)展Yummy Noodle Bar的內(nèi)部應(yīng)用程序,創(chuàng)建一個(gè)新的公共Web API以供提交,跟蹤,取消,以及修改訂單。
你需要什么
下載并運(yùn)行代碼
如果你下載過基礎(chǔ)代碼,你會(huì)發(fā)現(xiàn)本教程每節(jié)都在一個(gè)單獨(dú)的文件夾,編號為1,2,3,等。也有一些代碼片段:實(shí)際上是原始的,并且每個(gè)部分有單獨(dú)的完整代碼片段。
初始的 代碼集包括:
每個(gè)部分的完整代碼在包括初始代碼的基礎(chǔ)上,再加上教程某一點(diǎn)的實(shí)現(xiàn)代碼。
你可以選擇從初始代碼集,或者你也可以從一個(gè)給定部分的完整代碼集開始。不是每個(gè)代碼文件都顯示在教程中,因?yàn)槟菚?huì)將事情搞得很慢。但重要的事情是,比如寫測試,創(chuàng)建RESTful服務(wù),以及看一些關(guān)鍵領(lǐng)域的對象。
有許多用于構(gòu)建的系統(tǒng),而本教程使用Gradle和Gradle Wrapper來進(jìn)行構(gòu)建,所以如果你手頭有一份代碼的拷貝,你不需要安裝任何東西來運(yùn)行這些代碼。
例如,如果你想要檢查最初的代碼集,你可以這樣做:
- $ git clone https://github.com/spring-guides/tut-rest.git
- $ cd tut-rest/initial
- $ ./gradlew clean test
在那里,你可以瀏覽build/reports/tests 并查看所有的測試結(jié)果。
如果你想跳到第6節(jié),本教程的***一部分,來運(yùn)行該web應(yīng)用及其測試,可以這樣:
- $ cd ../6/complete
- $ ./gradlew tomcatRunWar
在另外一個(gè)控制臺中輸入:
- $ ./gradlew test
有些章節(jié)不需要運(yùn)行該web應(yīng)用來執(zhí)行測試。
Yummy Noodle Bar應(yīng)用框架和核心領(lǐng)域
該應(yīng)用目前的架構(gòu)在下面這個(gè)"Life Preserver"圖中有所展示:
Life Preserver圖是一種工具,用來構(gòu)建那些遵從了Hexagonal Architecture原則的應(yīng)用,有時(shí)也被稱為'Ports and Adapters',它最早由Alistair Cockburn進(jìn)行描述。Life Preserver圖展示了你的應(yīng)用的核心領(lǐng)域以及包圍在其周圍的整合領(lǐng)域,這些領(lǐng)域可以直接對應(yīng)到程序包或組件,你將會(huì)在整個(gè)教程中使用到它們,所以這是一種理解事物模型的很棒的方式。
打開初始項(xiàng)目,你將會(huì)看到上面的life preserver圖映射到了src/main/java/com/yummynoodleba目錄下的不同包中。
在核心應(yīng)用的頂層包c(diǎn)om.yummynoodlebar.core中,包含著下列內(nèi)容:
花些時(shí)間讓你自己熟悉每個(gè)包里的組件。對核心領(lǐng)域組件的測試在項(xiàng)目的src/test里。這些測試會(huì)告訴你如何使用這些組件。
RESTful web服務(wù)領(lǐng)域
RESTful web服務(wù)能夠把你的應(yīng)用和所有可能用到你服務(wù)的客戶端集成在一起。因此,RESTfulF服務(wù)存在于他們自己的集成領(lǐng)域,在你的應(yīng)用程序核心之外,正如下面的圖一樣,RESTfulF能夠服務(wù)于你的應(yīng)用程序的整個(gè)生命周期中。
把你的應(yīng)用程序和外面的世界整合在一起,需要考慮下面的一些設(shè)計(jì)和實(shí)現(xiàn)約束:
英文原文:Designing and Implementing RESTful Web Services with Spring
譯文鏈接:http://www.oschina.net/translate/designing-and-implementing-restful-web-services-with-spring

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流