<6>Springboot 實(shí)現(xiàn) Restful 服務(wù),基于 HTTP / JSON 傳輸

????????????????????????????????????????Springboot 實(shí)現(xiàn) Restful 服務(wù),基于 HTTP / JSON 傳輸

主目錄:http://www.spring4all.com/article/246

轉(zhuǎn)載于:http://www.spring4all.com/article/268

運(yùn)行 springboot-restful 工程

git clone 下載工程?springboot-learning-example?读第,項(xiàng)目地址見 GitHub -https://github.com/JeffLi1993/springboot-learning-example。下面開始運(yùn)行工程步驟(Quick Start):

1.數(shù)據(jù)庫準(zhǔn)備

a.創(chuàng)建數(shù)據(jù)庫 springbootdb:

CREATE DATABASE springbootdb;

b.創(chuàng)建表 city :(因?yàn)槲蚁矚g徒步)

DROP TABLE IF EXISTS? `city`;

CREATE TABLE `city` (

? `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '城市編號(hào)',

? `province_id` int(10) unsigned? NOT NULL COMMENT '省份編號(hào)',

? `city_name` varchar(25) DEFAULT NULL COMMENT '城市名稱',

? `description` varchar(25) DEFAULT NULL COMMENT '描述',

? PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

c.插入數(shù)據(jù)

INSERT city VALUES (1 ,1,'溫嶺市','BYSocket 的家在溫嶺拥刻。');

2. springboot-restful 工程項(xiàng)目結(jié)構(gòu)介紹

springboot-restful 工程項(xiàng)目結(jié)構(gòu)如下圖所示:

org.spring.springboot.controller - Controller 層

org.spring.springboot.dao - 數(shù)據(jù)操作層 DAO

org.spring.springboot.domain - 實(shí)體類

org.spring.springboot.service - 業(yè)務(wù)邏輯層

Application - 應(yīng)用啟動(dòng)類

application.properties - 應(yīng)用配置文件卦方,應(yīng)用啟動(dòng)會(huì)自動(dòng)讀取配置

3.改數(shù)據(jù)庫配置

打開 application.properties 文件, 修改相應(yīng)的數(shù)據(jù)源配置泰佳,比如數(shù)據(jù)源地址、賬號(hào)尘吗、密碼等逝她。(如果不是用 MySQL,自行添加連接驅(qū)動(dòng) pom睬捶,然后修改驅(qū)動(dòng)名配置黔宛。)

4.編譯工程

在項(xiàng)目根目錄 springboot-learning-example,運(yùn)行 maven 指令:

mvn clean install

5.運(yùn)行工程

右鍵運(yùn)行 springboot-restful 工程 Application 應(yīng)用啟動(dòng)類的 main 函數(shù)擒贸。

用 postman 工具可以如下操作臀晃,

根據(jù) ID,獲取城市信息

GET?http://127.0.0.1:8080/api/city/1


根據(jù) ID介劫,獲取城市信息

獲取城市列表

GET?http://127.0.0.1:8080/api/city


獲取城市列表

新增城市信息

POST http://127.0.0.1:8080/api/city


新增城市信息

更新城市信息

PUT?http://127.0.0.1:8080/api/city


更新城市信息

刪除城市信息

DELETE http://127.0.0.1:8080/api/city/2


刪除城市信息



springboot-restful 工程控制層實(shí)現(xiàn)詳解

什么是 REST?

REST 是屬于 WEB 自身的一種架構(gòu)風(fēng)格徽惋,是在 HTTP 1.1 規(guī)范下實(shí)現(xiàn)的。Representational State Transfer 全稱翻譯為表現(xiàn)層狀態(tài)轉(zhuǎn)化座韵。Resource:資源险绘。比如 newsfeed踢京;Representational:表現(xiàn)形式,比如用JSON宦棺,富文本等瓣距;State Transfer:狀態(tài)變化。通過HTTP 動(dòng)作實(shí)現(xiàn)代咸。

理解 REST ,要明白五個(gè)關(guān)鍵要素:

資源(Resource)

資源的表述(Representation)

狀態(tài)轉(zhuǎn)移(State Transfer)

統(tǒng)一接口(Uniform Interface)

超文本驅(qū)動(dòng)(Hypertext Driven)

6 個(gè)主要特性:

面向資源(Resource Oriented)

可尋址(Addressability)

連通性(Connectedness)

無狀態(tài)(Statelessness)

統(tǒng)一接口(Uniform Interface)

超文本驅(qū)動(dòng)(Hypertext Driven)

詳見?http://www.infoq.com/cn/articles/understanding-restful-style


Spring 對(duì) REST 支持實(shí)現(xiàn)

CityRestController.java?城市 Controller 實(shí)現(xiàn) Restful HTTP 服務(wù)


CityRestController.java?城市 Controller

具體 Service 蹈丸、dao 層實(shí)現(xiàn)看代碼GitHub?https://github.com/JeffLi1993/springboot-learning-example/tree/master/springboot-restful

代碼詳解:

@RequestMapping?處理請(qǐng)求地址映射


3.HTTP 知識(shí)補(bǔ)充


詳情請(qǐng)看《JavaEE 要懂的小事:一、圖解Http協(xié)議》,地址為:https://www.bysocket.com/?p=282

Springboot 實(shí)現(xiàn) Restful 服務(wù)呐芥,基于 HTTP / JSON 傳輸逻杖,適用于前后端分離。這只是個(gè)小demo贩耐,沒有加入bean validation這種校驗(yàn)弧腥。還有各種業(yè)務(wù)場(chǎng)景。

推薦:《?Springboot 整合 Mybatis 的完整 Web 案例》,地址為:https://www.bysocket.com/?p=1610

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潮太,一起剝皮案震驚了整個(gè)濱河市管搪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铡买,老刑警劉巖更鲁,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奇钞,居然都是意外死亡澡为,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門景埃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒至,“玉大人,你說我怎么就攤上這事谷徙【軉” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵完慧,是天一觀的道長谋旦。 經(jīng)常有香客問我,道長屈尼,這世上最難降的妖魔是什么册着? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮脾歧,結(jié)果婚禮上甲捏,老公的妹妹穿的比我還像新娘。我一直安慰自己鞭执,他們只是感情好摊鸡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布绽媒。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猴蹂,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天庆猫,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疙教。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伞租,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贞谓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起葵诈,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤裸弦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后作喘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體理疙,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年泞坦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窖贤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贰锁,死狀恐怖赃梧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豌熄,我是刑警寧澤槽奕,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站房轿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏所森。R本人自食惡果不足惜囱持,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望焕济。 院中可真熱鬧纷妆,春花似錦、人聲如沸晴弃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至际邻,卻和暖如春芯丧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背世曾。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工缨恒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轮听。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓骗露,卻偏偏與公主長得像,于是被迫代替她去往敵國和親血巍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萧锉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 摘要: 原創(chuàng)出處 www.bysocket.com 「泥瓦匠BYSocket 」歡迎轉(zhuǎn)載,保留摘要述寡,謝謝柿隙! 『產(chǎn)品...
    子木聊出海閱讀 1,613評(píng)論 5 50
  • =========================================================...
    _燈火闌珊處閱讀 2,419評(píng)論 0 3
  • 最近的今日頭條和新聞被“傳銷”這個(gè)名詞承包了,短短一個(gè)月辨赐,有三名大學(xué)生相繼落入傳銷的陷阱优俘,最后身亡。 其實(shí)掀序,不難可...
    拾樂者閱讀 246評(píng)論 2 3
  • 想是一回事帆焕,寫出來又是一回事.縱使腦海中有無限感概,奈何寫出來也就只有寥寥幾筆不恭,仿佛剛才所思所想不是同一個(gè)人...
    betterH閱讀 199評(píng)論 0 0
  • 一邊是花園 一邊是荒原 我有時(shí)在這邊 有時(shí)在那邊 不帶這里的種子去荒原 也不沾一身土回來花園 兩邊的路各自通天 夜...
    齊家能閱讀 163評(píng)論 0 1