成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

9-django——restful設(shè)計(jì)風(fēng)格

scq000 / 820人閱讀

摘要:設(shè)計(jì)風(fēng)格協(xié)議與用戶的通信協(xié)議,總是使用協(xié)議域名應(yīng)該盡量將部署在專用域名之下,如果確定很簡單,不會(huì)有進(jìn)一步的擴(kuò)展,可以考慮放在主域名之下。數(shù)據(jù)庫中的表示記錄同種數(shù)據(jù)的集合,所以中的名詞也應(yīng)該使用復(fù)數(shù)。

RESTful Api設(shè)計(jì)風(fēng)格

協(xié)議:API與用戶的通信協(xié)議,總是使用HTTPS協(xié)議

域名:應(yīng)該盡量將API部署在專用域名之下,如果確定API很簡單,不會(huì)有進(jìn)一步的擴(kuò)展,可以考慮放在主域名之下。

版本

應(yīng)該將API的版本放在URL中:https://www.sunck.wang/api/v1.0

將版本號(hào)放在HTTP頭信息中:https://www.sunck.wang/students

路徑:表示API的具體網(wǎng)址,每個(gè)網(wǎng)址代表一種資源,所以網(wǎng)址中不能有動(dòng)詞,只能有名詞,并且所用的名詞往往與數(shù)據(jù)庫的表名對(duì)應(yīng)。數(shù)據(jù)庫中的表示記錄同種數(shù)據(jù)的集合,所以API中的名詞也應(yīng)該使用復(fù)數(shù)。

獲取所有學(xué)生:

https://www.sunck.wang/api/v1... 錯(cuò)誤寫法

https://www.sunck.wang/api/v1... 正確寫法

使用正確的HTTP請(qǐng)求方法
方式 解釋
GET select 從服務(wù)器獲取資源(一項(xiàng)或者多項(xiàng))
POST create 在服務(wù)器新建一個(gè)資源
PUT update 在服務(wù)器更新資源(客戶端提供改變后的完整資源)
PATCH update 在服務(wù)器更新資源(客戶端提供改的屬性)
DELETE delete 從服務(wù)器刪除資源
HEAD 獲取資源的元數(shù)據(jù)
OPTIONS 獲取信息,關(guān)于資源的哪些屬性是客戶端可以改變的
例子
描述 方式
列出所有班級(jí) GET /grades/
獲取某個(gè)指定班級(jí)編號(hào)的信息 GET /grades/id
列出某個(gè)指定編號(hào)的班級(jí)的所有學(xué)生 GET /grades/id/students/
獲取某個(gè)指定編號(hào)的學(xué)生信息 GET /students/id
創(chuàng)建一個(gè)學(xué)生 POST /students/
更新某個(gè)指定學(xué)生的信息(信息全部由客戶端提供) PUT /students/id
刪除某個(gè)指定編號(hào)的學(xué)生 DELETE /students/id
刪除某個(gè)指定班級(jí)的下的所有學(xué)生 DELETE /grades/id/students/
過濾信息

如果資源數(shù)較多,服務(wù)器不能將所有數(shù)據(jù)一次全部返回給客戶端,API應(yīng)該提供參數(shù),過濾返回結(jié)果

例子
描述 方式
指定返回記錄的數(shù)量 GET /students/?limit=
指定返回記錄的開始位置 GET /students/?offset=
指定返回第幾頁數(shù)據(jù),以及每頁的記錄數(shù) GET /students/?page=&per_page=
指定返回結(jié)果按照哪個(gè)屬性排序,以及排序的順序 GET /students/?sortby=&order=
指定篩選條件 GET /students/?student_age_gt=

注意:參數(shù)的設(shè)計(jì)允許存在冗余,即允許API路徑和URL參數(shù)偶爾有重復(fù)

狀態(tài)碼

服務(wù)器向客戶端返回的狀態(tài)碼和提示信息

錯(cuò)誤處理

如果錯(cuò)誤碼是4xx,就應(yīng)該向用戶返回錯(cuò)誤信息,一般來說,返回的信息中將error作為鍵名,出錯(cuò)的信息作為鍵值即可

{
    error:"Invalid API KEY",
}
響應(yīng)結(jié)果

針對(duì)不同的操作,服務(wù)器向用戶返回結(jié)果應(yīng)該符合規(guī)范

方式 描述
GET /students/ 返回資源對(duì)象的列表
GET /students/id/ 返回單個(gè)資源對(duì)象
POST /students/ 返回新生成的資源對(duì)象
PUT /students/ 返回完整的資源對(duì)象
PATCH /students/ 返回完整的資源對(duì)象
DELETE /students/id/ 返回一個(gè)空文檔
使用鏈接相關(guān)的資源

返回結(jié)果中提供了鏈接,鏈向了其他的API方法,使得用戶不查看文檔,也知道下一步應(yīng)該做什么

示例
{
    link:"www.sunck.wang/grades/"
}
{
    "link":{
        "rel":"collection www.sunck.wang/index/",
        "href":"www.sunck.wang/grades/",
        "title":"List of Grades",
        "type":"application/json",
    }
}

rel:表示這個(gè)API與當(dāng)前網(wǎng)址的關(guān)系

href:表示API路徑

title:表示API的標(biāo)題

type:表示返回的類型

其他:服務(wù)器返回的數(shù)據(jù)盡量使用JSON格式,避免使用XML格式

API文檔規(guī)范要求

一、 寫明該接口的功能是什么

二、 請(qǐng)求的URL是什么

三、 請(qǐng)求方式是什么(POST、GET、 DELETE、PUT、 PATCH等)

四、 參數(shù)是什么,此處還需說明你的參數(shù)名、參數(shù)類型、是否必填、參數(shù)的簡單解釋

五、 請(qǐng)求成功時(shí)的響應(yīng)內(nèi)容(實(shí)際開發(fā)中,要與前端同事溝通使用什么樣的數(shù)據(jù)結(jié)構(gòu)),并且對(duì)其中的字段做出說明(包括含義、數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu)<字符串,數(shù)組,字典等>)

六、 請(qǐng)求失敗時(shí)的響應(yīng)內(nèi)容,并且對(duì)其中的字段做出說明(包括含義、數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu)<字符串,數(shù)組,字典等>)包括多帶帶的對(duì)錯(cuò)誤碼的說明

七、 請(qǐng)求樣例(返回結(jié)果部分要包括成功的情況和失敗的情況)

八、 最好寫上文檔的編寫人和編寫時(shí)間(可不寫)

Demo:

? 功能:獲取某人的下屬

? URL:”people/api/v1/ subordinate”

請(qǐng)求參數(shù)說明

參數(shù)名 類型 是否必填 備注
uid int 用戶的id

請(qǐng)求成功參數(shù)說明

參數(shù)名 類型 說明
code Int 響應(yīng)狀態(tài)碼1代表成功
msg string 響應(yīng)信息
data 數(shù)組 數(shù)組內(nèi)是字典類型,詳情見下表

data內(nèi)的響應(yīng)參數(shù)說明

參數(shù)名 類型 說明
uid int 下屬的用戶ID
name string 下屬的用戶名
position string 下屬的崗位

?請(qǐng)求失敗參數(shù)說明

參數(shù)名 類型 說明
code Int 響應(yīng)狀態(tài)碼非1值
msg string 錯(cuò)誤提示信息

code值說明

Code 說明
1 成功
2 該人已經(jīng)離職
3 請(qǐng)求參數(shù)不完整
4 參數(shù)類型錯(cuò)誤

樣例:

? 請(qǐng)求參數(shù) uid 1

# 請(qǐng)求成功樣例
{    
    "code": 1,
    "msg": "ok",
    "data":[
        {
        "uid":2,
        "name": "Tom",
        "position": "教師"
        },
        {
        "uid":3,
        "name’: "Lucy",
        "position": "助教"
        }
    ]
}

# 請(qǐng)求失敗樣例
    {
        "data": 2,
        "msg": "該人已離職"
}

10-django——RESTful API 之序列化

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42023.html

相關(guān)文章

  • 詳解REST架構(gòu)風(fēng)格

    摘要:但是遠(yuǎn)遠(yuǎn)不僅是指的風(fēng)格,它是一種網(wǎng)絡(luò)應(yīng)用的架構(gòu)風(fēng)格。參考用定位資源在架構(gòu)風(fēng)格中,用來指定一個(gè)資源。完整狀態(tài)碼列表如何設(shè)計(jì)在過去不使用架構(gòu)風(fēng)格的時(shí)候,如果我們要設(shè)計(jì)一個(gè)系統(tǒng),會(huì)以操作為出發(fā)點(diǎn),然后圍繞它去建設(shè)其他需要的東西。 引言 作為Web開發(fā)者,你可能或多或少了解一些REST的知識(shí),甚至已經(jīng)非常習(xí)慣于它,以至于在正式地學(xué)習(xí)REST的時(shí)候,你可能心里會(huì)想:本來就是這樣做的啊,不然還能怎...

    ChanceWong 評(píng)論0 收藏0
  • 淺談REST風(fēng)格

    摘要:廢話不多講,下面就說說風(fēng)格到底是個(gè)神馬東東。一個(gè)資源可能會(huì)隨著需求的變化而經(jīng)歷一個(gè)資源創(chuàng)建修改查詢刪除等過程,風(fēng)格正是基于協(xié)議運(yùn)行的,協(xié)議又被稱為無狀態(tài)協(xié)議,所以資源的變化需要在服務(wù)端完成。 現(xiàn)如今微服務(wù)如日中天,那么大家有沒有想過各個(gè)微服務(wù)之間是怎么調(diào)用數(shù)據(jù)亦或是怎么交互的呢?當(dāng)然方式有很多,但今天所說的REST風(fēng)格被業(yè)界推薦為微服務(wù)之間交互的首選方式(小編還是非常喜歡這種方式的)。...

    Darkgel 評(píng)論0 收藏0
  • 那些年,我們一起誤解過的REST

    摘要:通過增刪查改,引起資源狀態(tài)的改變,稱為狀態(tài)轉(zhuǎn)移。用于獲取資源的元信息。方法與方法類似,都可以查詢資源的元信息放在的,但不會(huì)返回資源的表述。表示請(qǐng)求有問題,如參數(shù)錯(cuò)誤等。表示當(dāng)前請(qǐng)求的某前置條件不符合。網(wǎng)關(guān)錯(cuò)誤,從上游服務(wù)器收到無效響應(yīng)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由sammyshen 發(fā)表于云+社區(qū)專欄 最近幾年REST API越來越流行,特別是...

    DesGemini 評(píng)論0 收藏0
  • RESTful實(shí)踐(具體應(yīng)用)思考

    摘要:其他交互一般會(huì)遵循一些數(shù)據(jù)結(jié)構(gòu)協(xié)議或者狀態(tài)值,比如不同的操作結(jié)果對(duì)應(yīng)不同的狀態(tài)值,且出錯(cuò)會(huì)返回指定的錯(cuò)誤信息方便前端進(jìn)行提示等。 RESTful這種架構(gòu)已經(jīng)具有很長的時(shí)間和歷程了,但似乎最近restful這個(gè)詞出現(xiàn)的頻率特別高,目前不是很清楚是因?yàn)槲易詡€(gè)兒現(xiàn)在是以restful風(fēng)格寫程序產(chǎn)生的孕婦效應(yīng),還是單頁面程序開發(fā)的流行造成的。 其實(shí)一開始我也是不想寫這篇文章的,因?yàn)榫W(wǎng)絡(luò)上與re...

    myshell 評(píng)論0 收藏0
  • 基于ThinkPHP 的Api 設(shè)計(jì)

    摘要:前言關(guān)于的設(shè)計(jì)目前比較流行的是風(fēng)格的設(shè)計(jì)譬如阮一峰的這篇設(shè)計(jì)指南中的介紹也有很多支持風(fēng)格的框架具體請(qǐng)自己谷歌之但是實(shí)際開發(fā)中很對(duì)公司采用的并不是支持風(fēng)格的框架而且是在實(shí)際的開發(fā)過程中接口分為不同的版本實(shí)現(xiàn)接口管理按照官網(wǎng)教程搭建項(xiàng)目配置默認(rèn) 前言 關(guān)于Api的設(shè)計(jì)目前比較流行的是 restful 風(fēng)格的Api設(shè)計(jì),譬如阮一峰的這篇RESTful API 設(shè)計(jì)指南中的介紹,PHP也有很多...

    lijy91 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<