<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RESTful架構(gòu)和RESTful API設(shè)計(jì)總結(jié)

          共 2954字,需瀏覽 6分鐘

           ·

          2022-04-18 15:25

          最近

          上一篇:支付寶系統(tǒng)架構(gòu)(內(nèi)部架構(gòu)圖)

          作者:智明書
          鏈接:https://www.jianshu.com/p/955eb2faa354

          REST這個(gè)詞是2000年Roy Fielding在他的博士論文中提出的,F(xiàn)ielding參與了http協(xié)議的設(shè)計(jì),也是Apache web server項(xiàng)目的參與者。他的這篇博士論文可以說對(duì)互聯(lián)網(wǎng)的軟件設(shè)計(jì)產(chǎn)生了深遠(yuǎn)的影響。但是從字面上理解REST(Representational State Transfer, 表現(xiàn)層狀態(tài)轉(zhuǎn)移)是非常抽象的。因此,本篇文章試圖將REST進(jìn)行拆解,分別從以下幾個(gè)部分來進(jìn)行解讀:

          Resource 資源

          REST忽略了主語,全稱應(yīng)該是資源的表現(xiàn)層狀態(tài)轉(zhuǎn)移。所謂資源就是互聯(lián)網(wǎng)上的各種資源,比如文本、圖片、音頻、視頻等。在互聯(lián)網(wǎng)上通過URI指定唯一的資源,所謂的’上網(wǎng)‘就是通過調(diào)用資源的URL來跟互聯(lián)網(wǎng)上的一系列資源進(jìn)行互動(dòng)。
          注:URI只代表資源的實(shí)體,嚴(yán)格地說,有些網(wǎng)址最后的.html后綴名是不必要的,因?yàn)檫@個(gè)后綴名表示格式,屬于"表現(xiàn)層"范疇,而URI應(yīng)該只代表"資源"的位置。
          Representational 表象
          資源可以有各種具體的表現(xiàn)形式,比如文本可以有xml格式,html格式,json格式,甚至是二進(jìn)制格式,圖片可以有PNG格式,JPEG格式等。資源的一個(gè)具體表現(xiàn)形式,應(yīng)該在HTTP請(qǐng)求的頭信息中用AcceptContent-Type字段指定,這兩個(gè)字段才是對(duì)"表現(xiàn)層"的描述。

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

          通過http動(dòng)詞來實(shí)現(xiàn)資源的狀態(tài)轉(zhuǎn)移,用GET來請(qǐng)求資源,用POST來新建資源,用PUT來更新資源,用DELETE來刪除資源。

          簡(jiǎn)明扼要的總結(jié)REST:


          RESTful API設(shè)計(jì)總結(jié)

          隨著近年來移動(dòng)互聯(lián)網(wǎng)的發(fā)展,各種客戶端出不窮:Web,IOS,Android。因此需要一種機(jī)制使得各種客戶端能夠和服務(wù)端進(jìn)行通訊,這就使得RESTful API的架構(gòu)流行起來。另外,搜索公眾號(hào)互聯(lián)網(wǎng)架構(gòu)師后臺(tái)回復(fù)“面試”,獲取一份驚喜禮包。RESTful是REST(表現(xiàn)層狀態(tài)轉(zhuǎn)化)的形容詞形式,因此RESTful API就可以理解成“符合REST風(fēng)格的API”。

          格式規(guī)范

          根據(jù)RFC3986定義,URL是大小寫敏感的。所以為了避免歧義,盡量使用小寫字母。
          RESTful API 應(yīng)具備良好的可讀性,當(dāng)url中某一個(gè)片段(segment)由多個(gè)單詞組成時(shí),建議使用?-?來隔斷單詞,而不是使用?_。這主要是因?yàn)椋瑸g覽器中超鏈接顯示的默認(rèn)效果是文字并附帶下劃線,如果API以_隔斷單詞,二者會(huì)重疊,影響可讀性。
          /api/featured-post/?????#?GOOD
          /api/featured_post/?????#?WRONG

          協(xié)議

          提供給用戶的API,總是使用HTTPs協(xié)議。使用HTTPs協(xié)議還是HTTP協(xié)議本身和RESTful API并無關(guān)系,但是這對(duì)于提高網(wǎng)站的安全性很重要。

          域名

          API應(yīng)該放在專有域名下,比如https://api.example.com/v1。也可以簡(jiǎn)單地把版本放在URL中,比如https://www.example.com/api/v1

          版本

          API的版本號(hào)應(yīng)該放在URL中:

          https://api.example.com/v1/

          名詞應(yīng)該使用復(fù)數(shù)

          所用的名詞往往和數(shù)據(jù)庫的表名對(duì)應(yīng),而數(shù)據(jù)庫的表是一組記錄的集合,因此URL中的名詞即表示一組資源的集合,故URI中的名詞要使用復(fù)數(shù)
          https://api.example.com/v1/students
          https://api.example.com/v1/schools
          https://api.example.com/v1/employees

          URL中不能使用動(dòng)詞

          URI代表著一個(gè)資源,是一個(gè)實(shí)體,應(yīng)該是名詞,而不要把具體的動(dòng)作放在URL中,對(duì)資源的操作應(yīng)該通過HTTP的動(dòng)詞來實(shí)現(xiàn)。

          不符合CRUD的情況

          如果實(shí)在無法表示,也可使用動(dòng)詞,例如search沒有對(duì)應(yīng)的HTTP方法,可以在路徑中使用search,更加直觀
          http://api.xxx.com/apiv3/search?timestamp=123213218&user_id=4192121&keyword=2134789。再例如創(chuàng)建了博客網(wǎng)站,如果想要發(fā)布一個(gè)博客,可以使用POST /articles/{:id}/publish

          用HTTP動(dòng)詞表示對(duì)資源的操作

          使用HTTP協(xié)議里的動(dòng)詞來實(shí)現(xiàn)資源的獲取、刪除、添加等操作
          GET?????https://api.example.com/v1/schools??????????????????#?列出所有學(xué)校
          POST????https://api.example.com/v1/schools??????????????????#?新建一個(gè)學(xué)校
          GET?????https://api.example.com/v1/schools/ID???????????????#?列出指定學(xué)校的信息
          DELETE??https://api.example.com/v1/schools/ID???????????????#?刪除指定學(xué)校

          GET?????https://api.example.com/v1/schools/ID/students??????#?列出指定學(xué)校的所有學(xué)生
          DELETE??https://api.example.com/v1/schools/ID/students/ID???#?刪除指定學(xué)校的指定學(xué)生

          HTTP狀態(tài)碼

          其它

          API的身份認(rèn)證應(yīng)該使用OAuth 2.0框架
          服務(wù)器返回的數(shù)據(jù)格式,應(yīng)該盡量使用JSON,避免使用XML。JSON有可讀性強(qiáng),結(jié)構(gòu)緊湊,支持的語言種類多的特點(diǎn),因此JSON是RESTful API最常用的返回格式。

          THE?END
          PS:如果覺得我的分享不錯(cuò),歡迎大家隨手點(diǎn)贊、轉(zhuǎn)發(fā)、在看。
          瀏覽 33
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人三级片视频 | 高清免费无码 | 在线看成人毛片 | 三区免费在线播放 | 大鸡鸡在线观看 |