大家好揪垄,我是IT修真院深圳分院第5期學員幕与,一枚正直善良的JAVA程序員。
今天給大家分享一下秒咐,修真院官網(wǎng)JAVA任務(wù)1中盈简,restful是什么。
一太示、背景介紹
restful風格柠贤,就是一種面向資源服務(wù)的API設(shè)計方式,它不是規(guī)范类缤,不是標準臼勉,它一種設(shè)計模式。是符合rest架構(gòu)風格的網(wǎng)絡(luò)API接口,完全承認Http是用于標識資源餐弱。
二.知識剖析
1.REST名稱
REST:REpresentational State Transfer = 直接翻譯:表現(xiàn)層狀態(tài)轉(zhuǎn)移宴霸。晦澀是因為前面主語被去掉了膏蚓,全稱是 Resource Representational State Transfer:通俗來講就是:資源在網(wǎng)絡(luò)中以某種表現(xiàn)形式進行狀態(tài)轉(zhuǎn)移瓢谢。分解開來:Resource:資源,即數(shù)據(jù)(網(wǎng)絡(luò)的核心)驮瞧。比如 newsfeed氓扛,friends等;Representational:某種表現(xiàn)形式剧董,比如用JSON幢尚,XML,JPEG等翅楼;State Transfer:狀態(tài)變化尉剩。通過HTTP動詞實現(xiàn)。
2.REST是什么
2.1. REST描述的是在網(wǎng)絡(luò)中client和server的一種交互形式毅臊;REST本身不實用理茎,實用的是如何設(shè)計 RESTful API(REST風格的網(wǎng)絡(luò)接口);
2.2. Server提供的RESTful API中,URL中只使用名詞來指定資源皂林,原則上不使用動詞朗鸠。“資源”是REST架構(gòu)或者說整個網(wǎng)絡(luò)處理的核心
2.3. 用HTTP協(xié)議里的動詞來實現(xiàn)資源的添加础倍,修改烛占,刪除等操作。即通過HTTP動詞來實現(xiàn)資源的狀態(tài)扭轉(zhuǎn):GET 用來獲取資源沟启,POST 用來新建資源(也可以用于更新資源)忆家,PUT 用來更新資源,DELETE 用來刪除資源德迹。
2.4. Server和Client之間傳遞某資源的一個表現(xiàn)形式芽卿,比如用JSON,XML傳輸文本胳搞,或者用JPG卸例,WebP傳輸圖片等。當然還可以壓縮HTTP傳輸時的數(shù)據(jù)(on-wire data compression)肌毅。
2.5. 用 HTTP Status Code傳遞Server的狀態(tài)信息筷转。比如最常用的 200 表示成功,500 表示Server內(nèi)部錯誤等
3.為什么使用restful結(jié)構(gòu)
大家都知道"古代"網(wǎng)頁都是前端后端融在一起的芽腾,比如之前的PHP旦装,JSP等。在之前的桌面時代問題不大摊滔,但是近年來移動互聯(lián)網(wǎng)的發(fā)展,各種類型的Client層出不窮店乐,RESTful可以通過一套統(tǒng)一的接口為 Web艰躺,iOS和Android提供服務(wù)。另外對于廣大平臺來說眨八,比如Facebook platform腺兴,微博開放平臺,微信公共平臺等廉侧,它們不需要有顯式的前端页响,只需要一套提供服務(wù)的接口,于是RESTful更是它們最好的選擇段誊。
4.Server的API如何設(shè)計才滿足RESTful要求
1.URI使用名詞而不是動詞闰蚕,且推薦用復(fù)數(shù)。
2.保證 HEAD 和 GET 方法是安全的连舍,不會對資源狀態(tài)有所改變(污染)没陡。
3.資源的地址推薦用嵌套結(jié)構(gòu)。
4.警惕返回結(jié)果的大小。如果過大盼玄,及時進行分頁(pagination)或者加入限制(limit)贴彼。HTTP協(xié)議支持分頁(Pagination)操作,在Header中使用 Link 即可埃儿。
5.使用正確的HTTP Status Code表示訪問狀態(tài)
6.在返回結(jié)果用明確易懂的文本(String器仗。注意返回的錯誤是要給人看的童番,避免用 1001 這種錯誤信息)青灼,而且適當?shù)丶尤胱⑨尅?/p>
三.常見問題
1.URL和URI的區(qū)別
2.怎么驗證我的接口是restful風格的。
四.解決方案
1.假設(shè)所有的Html文檔都有唯一的編號妓盲,記作html:xxxxx杂拨,xxxxx是一串數(shù)字,即Html文檔的身份證號碼悯衬,這個能唯一標識一個Html文檔弹沽,那么這個號碼就是一個URI。而URL則通過描述是哪個主機上哪個路徑上的文件來唯一確定一個資源筋粗,也就是定位的方式來實現(xiàn)的URI策橘。
2.用Postman軟件來驗證,輸入http://localhost:8524/student/list娜亿,選擇GET方式丽已,點擊params,添加key:id,value:1,點擊send买决,得到j(luò)son數(shù)據(jù)沛婴。如果想要post請求,輸入:http://localhost:8524/student/a?督赤,選擇POST方式嘁灯,點擊如果服務(wù)端需要請求類型為json,需要在“headers”添加 key:Content-Type , value:application/json 選擇“raw”
五躲舌。編碼實戰(zhàn)
七丑婿、參考文獻
張慶東師兄的PPT
八.更多討論
1.student.xml里面是什么配置?
select id="selectByPrimaryKey"parameterType="java.lang.Integer"resultMap="BaseResultMap">
select
<includerefid="Base_Column_List"/>
fromstudent
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey"parameterType="java.lang.Integer">
deletefromstudent
where id=#{id,jdbcType=INTEGER}
把以前的INTEGER換成Integer没卸,我在上面耽誤了一下午羹奉,測試類老是過不去。
2.SpringMVC 只能處理post和get,為了還原對put和delete的處理约计,web.xml里面要加載什么過濾器诀拭?
答:?不知道簡書什么毛病,復(fù)制粘貼總是漏掉一部分文字
hiddenHttpMethodFilterorg.springframework.web.filter.HiddenHttpMethodFilterhiddenHttpMethodFilter/*
3.如何使用postman發(fā)送post病蛉、put請求
答:
在web測試中炫加,如果前后端尚未聯(lián)調(diào)瑰煎,后端可通過模擬前端發(fā)送請求的方式來測試后端代碼是否調(diào)通,當發(fā)送post俗孝、put請求時酒甸,如何使用postman來測試。
3.1.配置參數(shù)
3.2.選擇Body--->raw
3.3.寫入json
3.4.此時赋铝,需要將controller層的參數(shù)由字符串修改為對象插勤,后端才能將前端的json數(shù)據(jù)順利解析。
詳見視頻
感謝大家觀看
今天的分享就到這里啦革骨,歡迎大家點贊农尖、轉(zhuǎn)發(fā)、留言良哲、拍磚~
技能樹.IT修真院
“我們相信人人都可以成為一個工程師盛卡,現(xiàn)在開始,找個師兄筑凫,帶你入門滑沧,掌控自己學習的節(jié)奏,學習的路上不再迷梦∈担”滓技。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線棚潦,學習透明化令漂,成長可見化,師兄1對1免費指導丸边〉兀快來與我一起學習吧~
我的邀請碼:19214843,
或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/19214843