国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

scq000 / 815人閱讀

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

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

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

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

版本

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

將版本號放在HTTP頭信息中:https://www.sunck.wang/students

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

獲取所有學(xué)生:

https://www.sunck.wang/api/v1... 錯誤寫法

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

使用正確的HTTP請求方法
方式 解釋
GET select 從服務(wù)器獲取資源(一項或者多項)
POST create 在服務(wù)器新建一個資源
PUT update 在服務(wù)器更新資源(客戶端提供改變后的完整資源)
PATCH update 在服務(wù)器更新資源(客戶端提供改的屬性)
DELETE delete 從服務(wù)器刪除資源
HEAD 獲取資源的元數(shù)據(jù)
OPTIONS 獲取信息,關(guān)于資源的哪些屬性是客戶端可以改變的
例子
描述 方式
列出所有班級 GET /grades/
獲取某個指定班級編號的信息 GET /grades/id
列出某個指定編號的班級的所有學(xué)生 GET /grades/id/students/
獲取某個指定編號的學(xué)生信息 GET /students/id
創(chuàng)建一個學(xué)生 POST /students/
更新某個指定學(xué)生的信息(信息全部由客戶端提供) PUT /students/id
刪除某個指定編號的學(xué)生 DELETE /students/id
刪除某個指定班級的下的所有學(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é)果按照哪個屬性排序,以及排序的順序 GET /students/?sortby=&order=
指定篩選條件 GET /students/?student_age_gt=

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

狀態(tài)碼

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

錯誤處理

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

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

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

方式 描述
GET /students/ 返回資源對象的列表
GET /students/id/ 返回單個資源對象
POST /students/ 返回新生成的資源對象
PUT /students/ 返回完整的資源對象
PATCH /students/ 返回完整的資源對象
DELETE /students/id/ 返回一個空文檔
使用鏈接相關(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:表示這個API與當(dāng)前網(wǎng)址的關(guān)系

href:表示API路徑

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

type:表示返回的類型

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

API文檔規(guī)范要求

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

二、 請求的URL是什么

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

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

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

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

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

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

Demo:

? 功能:獲取某人的下屬

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

請求參數(shù)說明

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

請求成功參數(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 下屬的崗位

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

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

code值說明

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

樣例:

? 請求參數(shù) uid 1

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

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

10-django——RESTful API 之序列化

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/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)格中,用來指定一個資源。完整狀態(tài)碼列表如何設(shè)計在過去不使用架構(gòu)風(fēng)格的時候,如果我們要設(shè)計一個系統(tǒng),會以操作為出發(fā)點,然后圍繞它去建設(shè)其他需要的東西。 引言 作為Web開發(fā)者,你可能或多或少了解一些REST的知識,甚至已經(jīng)非常習(xí)慣于它,以至于在正式地學(xué)習(xí)REST的時候,你可能心里會想:本來就是這樣做的啊,不然還能怎...

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

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

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

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

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

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

    myshell 評論0 收藏0
  • 基于ThinkPHP 的Api 設(shè)計

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

    lijy91 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<