RESTFUL-API-設(shè)計開發(fā)課件_第1頁
RESTFUL-API-設(shè)計開發(fā)課件_第2頁
RESTFUL-API-設(shè)計開發(fā)課件_第3頁
RESTFUL-API-設(shè)計開發(fā)課件_第4頁
RESTFUL-API-設(shè)計開發(fā)課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

RESTFULAPI設(shè)計開發(fā)Twitter :hooraceEmail :Blog :1.0beta0目錄什么是RESTRESTFULAPI介紹實例一些資源一些數(shù)據(jù)在這個流量=金錢的時代為什么要了解REST:API數(shù)據(jù)角度從數(shù)據(jù)上來看:電子商務(wù)的程序員不了解RESTAPI可以嗎?為什么要了解REST:同行數(shù)據(jù)角度搞電子商務(wù)的,不知道亞馬遜聯(lián)盟是不是覺得有點面子掛不?。繛槭裁匆私釸EST:AmazoneCommerceVSTaobaoTopREST +SOAP(85:15)RESTHttp協(xié)議你知道多少?1:http的請求方法有多少?2:請求包頭你知道多少?3:返回碼呢?什么是RESTRepresentationalStateTransfer(表述性狀態(tài)轉(zhuǎn)移),簡稱REST,來自RoyFielding的博士論文:《ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures》(《架構(gòu)風(fēng)格與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計》)RoyFielding是DaySoftware公司的首席科學(xué)家,Apache軟件基金會的合作創(chuàng)始人,在美國加洲大學(xué)歐文分校獲得博士學(xué)位,HTTP、URI等Web標(biāo)準(zhǔn)的主要設(shè)計者什么是REST(續(xù))REST從資源的角度來觀察整個網(wǎng)絡(luò),分布在各處的資源由URI確定,而客戶端的應(yīng)用通過URI來獲取資源的表征。獲得這些表征致使這些應(yīng)用程序轉(zhuǎn)變了其狀態(tài)。隨著不斷獲取資源的表征,客戶端應(yīng)用不斷地在轉(zhuǎn)變著其狀態(tài),所謂表征狀態(tài)轉(zhuǎn)移(RepresentationalStateTransfer)。REST是一種的分布式應(yīng)用架構(gòu)風(fēng)格,HTTP1.1是基于REST架構(gòu)風(fēng)格設(shè)計的。其他分布式引用架構(gòu)風(fēng)格1:分布式對象(RMI/EJB/HSF)2:遠(yuǎn)程過程調(diào)用(SOAP/XML-RPC/JSON-RPC/HESSION)指導(dǎo)思想:REST的架構(gòu)約束客戶端-服務(wù)器無狀態(tài)緩存統(tǒng)一接口分層系統(tǒng)按需代碼(可選約束,我沒搞懂)指導(dǎo)思想(續(xù)):REST的五條關(guān)鍵原則為所有“事物”定義ID(URI)將所有事物鏈接在一起使用標(biāo)準(zhǔn)方法資源多重表述無狀態(tài)通信為什么要基于API開發(fā)WEB是開放的時代,twitter的30W個客戶端構(gòu)造了操作壁壘,讓google,facebook無法追趕;API讓web,手機(jī)客戶端,桌面多種操作成為可能,程序員分工更加明確,切降低了開發(fā)成本;軟件開發(fā)依賴解耦讓編程語言發(fā)揮各自的優(yōu)勢。REST導(dǎo)致的變化RESTFULAPI一種基于http協(xié)議和rest架構(gòu)策略的一種簡單webservice,包含以下特征:Web服務(wù)的基本URI,如

Web服務(wù)接受與返回的互聯(lián)網(wǎng)媒體類型,比如:JSON,XML,YAML等。Web服務(wù)在該資源上所支持的一系列請求方法(比如:POST,GET,PUT或DELETE)。API必須是超文本驅(qū)動HTTP在RESTFULAPI中的典型應(yīng)用RESOURCEGETPOSTPUTDELETEPATCH

selectinsertupdatedeletePartialupdateGET/PUT/DELETE/PATCH方法:冪等的,POST是不冪等的POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的簡單實例:Python框架Web.py的實現(xiàn)RESTFULAPI然后配置urls=

('/item/(.*)',‘item')。好吧,我承認(rèn)這是我見過的最簡單實現(xiàn)restfulAPI的框架!詳細(xì)地址:思考1:其實都可以GET實現(xiàn),都用GET方式的害處?2:POST也可以實現(xiàn)很多功能,POST方式的害處?3:Servlet規(guī)范JSR154,JSR315定義了哪些方法?JavaAPIforRESTfulWebServices:JSR-311JSR-311(JAX-RS:JavaAPIforRESTfulWebServices)旨在定義一個統(tǒng)一的規(guī)范,使得Java程序員可以使用一套固定的接口來開發(fā)REST應(yīng)用。特征:使用POJO編程模型基于Annotation的配置集成了JAXB,JAX-RS提供的標(biāo)注將資源類@Path,標(biāo)注資源類或方法的相對路徑@GET,@PUT,@POST,@DELETE,標(biāo)注方法是用的HTTP請求的類型@Produces,標(biāo)注返回的MIME媒體類型@Consumes,標(biāo)注可接受請求的MIME媒體類型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分別標(biāo)注方法的參數(shù)來自于HTTP請求的不同位置,例如@PathParam來自于URL的路徑,@QueryParam來自于URL的查詢參數(shù),@HeaderParam來自于HTTP請求的頭信息,@CookieParam來自于HTTP請求的Cookie。代碼示例@GET@Produces({MediaType.APPLICATION_JSON})@Path("/book/{id}")publicBookgetBook(@PathParam("id")Stringid){returnnewBook("huhu","huhu");}@PUT@Path("/book/{name}")publicvoidupdateBook(@PathParam("name")PathSegmentbook){Iterator<Book>it=books.iterator();Stringname=String.valueOf(book.getMatrixParameters().get("name"));Stringcontent=String.valueOf(book.getMatrixParameters().get("content"));while(it.hasNext()){Bookbooktmp=it.next();if(name.equals(booktmp.getName())){booktmp.setContent(content);break;}}}訪問示例GETuserID/private-magicCookie/fullPOSTPUTcalendarIDDELETEcalendarIDPATCH/calendar/feeds/default/private/full/eventIDJAX-RS的實現(xiàn)ApacheCXF,開源的Web服務(wù)框架。Jersey,由Sun提供的JAX-RS的參考實現(xiàn)。RESTEasy,JBoss的實現(xiàn)。Restlet,由JeromeLouvel和DavePawson開發(fā),是最早的REST框架,先于JAX-RS出現(xiàn)題外話:Spring3.0直接支持restful風(fēng)格的編碼了。您選擇框架要考慮的產(chǎn)品成熟度,是否有成熟團(tuán)隊,社區(qū)文檔是否齊全和常見框架的集成(例如:Spirng)對流行協(xié)議的支持(Atom,Oauth)配置的簡易程度性能是否容易上手……前置URI流程授權(quán)方式簡單的session+secret_key的模式oauth自定義的其他方式開始階段JAVA框架選擇JSR311的實現(xiàn)文檔齊全支持spring,oauth,atom支持jetty的集成配置有點郁悶考慮cache:twitter示例考慮cache:twitter示例(續(xù))返回數(shù)據(jù)1:xml序列化耗時返回的數(shù)據(jù)把顯得有點大很想說的是twitterstreamapi拋棄了xml2:Json簡單清晰數(shù)據(jù)包小提示:不要json-lib,選擇jackson來序列化josnTaobao,amazon都返回json,xml2種格式3:atomAtom供稿格式(AtomSyndicationFormat)是用于網(wǎng)站消

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論