# 一文帶你看懂什么是RESTful API

一辰斋、什么是API

要想知道什么是RESTful API,我們得先知道什么是API.

API(Application Programming Interface埠褪,應用程序接口)是一些預先定義的函數浓利,或指軟件系統(tǒng)不同組成部分銜接的約定挤庇。 [1] 目的是提供應用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問原碼荞膘,或理解內部工作機制的細節(jié)。(引用自百度百科)

舉個例子:比如我們去肯德基買個漢堡玉工,不需要知道這個漢堡是怎么做出來的羽资,你付過錢之后就能得到一個漢堡。

肯德基就是一個服務器遵班,你就是一個客戶端屠升,錢就是你向肯德基請求獲得漢堡的參數。

比如狭郑,你如果要用水腹暖,你自己不必生產水,你只需要調用水廠生產好的水就行了翰萨,水廠會把水送到你家的管道里面脏答,你只要打開水龍頭就行了,水就會出來亩鬼。你打開水龍的過程就是在調用水廠的API.

調用API就是一手交錢一手交貨的過程殖告,制作漢堡則是API背后的工作。

ps:上面是說給不懂計算機的人解釋API是什么雳锋。

用計算機的術語來說就是黄绩,程序使用寫代碼的方式訪問其他人寫的代碼的一種渠道就是API.

比如你的程序想要支付寶的支付功能 ,你如果想要自己實現支付功能玷过,你得去找銀行對接啊爽丹,你得申請支付牌照,然后再寫程序辛蚊,一連串下來粤蝎,你自己都可以成立一個金融公司了,但是現在你不想成立一個金融公司你只想用支付寶的支付功能袋马,怎么辦呢诽里,你可以使用支付寶的接口,在你的程序里面調用支付功能的時候飞蛹,實際上就是請求支付寶的支付功能 谤狡,你不必考慮支付寶的支付功能是怎么做的,是用什么語言實現的卧檐,你只要按照規(guī)范請求支付寶的支付請求就行了墓懂。這就是調用支付寶的API.

二、什么是REST

REST即表述性狀態(tài)傳遞(英文:Representational State Transfer霉囚,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構風格捕仔。它是一種針對網絡應用的設計和開發(fā)方式,可以降低開發(fā)的復雜性,提高系統(tǒng)的可伸縮性榜跌。(引用自百度百科)

表述性狀態(tài)傳遞闪唆,這是個啥,誰能聽得懂啊钓葫,這個中英文直譯我吐了悄蕾。

  • REST描述的是在網絡中client和server的一種交互的形式,REST不是一種協議本身沒有太大的作用础浮,實用的是如何設計 RESTful API(REST風格的接口)

為什么要使用RESTful結構呢

以前的網頁都是前端和后端融在一起的帆调,比如之前的JSP等。在之前的PC時代問題沒有啥問題豆同,但是近年來移動互聯網快速發(fā)展番刊,各種前端框架特別多,如果我們還是前后端不分離的話影锈,一個是學習成本特別高芹务,一個是代碼的重復率太高導致我們做了很多重復的東西,代碼的復用率不高鸭廷,用接口的方式可以讓代碼的復用率變的高些锄禽,如下圖所示

1576638176196.png

為什么不用普通的接口方式,比如你要從你的網站上面得到一個城市的天氣靴姿,以前有可能你得這么設計

https://xxx/getWeather?city=深圳

你這樣就得傳兩個參數給后臺沃但,這樣看起來就很臃腫。

用RESTful方式設計接口你可能會這么設計

GET https://xxx/weathers/深圳

這樣只需要傳一個參數給后臺就可以了佛吓,這樣看起來很簡潔宵晚,而且我們的URI中使用的是名詞,而不是動詞维雇。通過HTTP動詞來實現資源的跳轉淤刃。具體實現方式下面說。

以上就是我們?yōu)槭裁匆褂肦ESTful API結構的原因吱型。

三逸贾、如何設計一個RESTful API結構的系統(tǒng)呢。

  1. URI里面使用的是名詞而且不是動詞津滞,推薦使用復數铝侵,通過HTTP動詞來實現資源的跳轉。

    • 錯誤的

      /getOrders

      listCitys

      /getWeathers?city=深圳

    • 正確的

      GET /orders/1 :返回訂單編號為1的訂單

      POST /orders :增加一個訂單

      Delete /orders/1 :刪除一個訂單編號為1的訂單

      PUT /orders/1 :更新訂單編號為1的訂單

  2. 保證方法里面只做一件事触徐,不會對資源狀態(tài)有所改變咪鲜。比如下面這樣是不允許的

GET /updateOrder?id=1

  1. 使用正確的HTTP Status Code 表示返回的請求狀態(tài)。比如

    {"code":"200"}

以上就是如何設計一個簡單的RESTful API結構系統(tǒng)的示例撞鹉。

Tips:

前后臺的數據傳輸可以用json,可以用xml傳輸疟丙,我還是比較傾向于json傳輸比較方便

比如請求一個城市的溫度颖侄,用xml返回結果是這樣

<city>   
    <name>深圳</name>
    <temperature>26</temperature>
     <code>200</code>
</city>

用json返回就是這樣

{
    "city":
    {
        "name":"深圳",
        "temperature":"26",
        "code":200
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市享郊,隨后出現的幾起案子览祖,更是在濱河造成了極大的恐慌,老刑警劉巖炊琉,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件展蒂,死亡現場離奇詭異,居然都是意外死亡温自,警方通過查閱死者的電腦和手機玄货,發(fā)現死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門皇钞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼泌,“玉大人,你說我怎么就攤上這事夹界」堇铮” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵可柿,是天一觀的道長鸠踪。 經常有香客問我,道長复斥,這世上最難降的妖魔是什么营密? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮目锭,結果婚禮上评汰,老公的妹妹穿的比我還像新娘。我一直安慰自己痢虹,他們只是感情好被去,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奖唯,像睡著了一般惨缆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丰捷,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天坯墨,我揣著相機與錄音,去河邊找鬼病往。 笑死畅蹂,一個胖子當著我的面吹牛,可吹牛的內容都是我干的荣恐。 我是一名探鬼主播液斜,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼累贤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了少漆?” 一聲冷哼從身側響起臼膏,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎示损,沒想到半個月后渗磅,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡检访,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年始鱼,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脆贵。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡医清,死狀恐怖,靈堂內的尸體忽然破棺而出卖氨,到底是詐尸還是另有隱情会烙,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布筒捺,位于F島的核電站柏腻,受9級特大地震影響,放射性物質發(fā)生泄漏系吭。R本人自食惡果不足惜五嫂,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肯尺。 院中可真熱鬧沃缘,春花似錦、人聲如沸蟆盹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逾滥。三九已至峰档,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寨昙,已是汗流浹背讥巡。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舔哪,地道東北人欢顷。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像捉蚤,于是被迫代替她去往敵國和親抬驴。 傳聞我的和親對象是個殘疾皇子炼七,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容

  • 老婆經常喜歡翻看我訂閱的技術雜志,她總能從她的視角提出很多有趣的問題布持。 一個悠閑的周日下午豌拙,她午覺醒來,又習慣性的...
    柳樹之閱讀 26,363評論 111 736
  • 一說到REST题暖,我想大家的第一反應就是“啊按傅,就是那種前后臺通信方式‰事保”但是在要求詳細講述它所提出的各個約束唯绍,以及如...
    時待吾閱讀 3,415評論 0 19
  • 去年有段時間得空,就把谷歌GAE的API權威指南看了一遍枝誊,收獲頗豐况芒,特別是在自己幾乎獨立開發(fā)了公司的云數據中心之后...
    騎單車的勛爵閱讀 20,474評論 0 41
  • 從今天開始,我開始學習Retrofit侧啼,整體Retrofit內容如下: 1牛柒、Retrofit解析1之前哨站——理解...
    隔壁老李頭閱讀 6,101評論 4 46
  • 注:本文純屬個人理解的瞎扯淡堪簿,本人沒有看過 Roy Thomas Fielding 關于 REST 的 論文痊乾。 1...
    佐藍Gogoing閱讀 408評論 0 2