RESTful介紹

RESTful介紹

REST與技術無關,代表的是一種軟件架構風格,REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態轉移”或“表現層狀態轉化”。阮一峰?理解RESTful架構

RESTful API設計指南

阮一峰 RESTful設計指南

API與用戶的通信協議

使用HTTPS協議。

域名

體現是API

  • https://api.example.com
  • https://example.org/api/

版本

體現版本

  • 將版本信息放在URL中,如:https://api.example.com/v1/
  • 將版本信息放在請求頭中。

路徑

網絡上任何東西都是資源,均使用名詞表示(可復數)面向資源編程

  • https://api.example.com/v1/zoos
  • https://api.example.com/v1/animals
  • https://api.example.com/v1/employees

method

根據method不同,進行不同操作

  • GET? ? ? :從服務器取出資源(一項或多項)
  • POST? ? :在服務器新建一個資源
  • PUT? ? ? :在服務器更新資源(客戶端提供改變后的完整資源)
  • PATCH? :在服務器更新資源(客戶端提供改變的屬性)
  • DELETE :從服務器刪除資源

過濾

通過在url上傳參的形式傳遞搜索條件

  • https://api.example.com/v1/zoos?limit=10:指定返回記錄的數量
  • https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
  • https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數
  • https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序
  • https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件

狀態碼

響應式設置狀態碼

  • 200 OK - [GET]:服務器成功返回用戶請求的數據,該操作是冪等的(Idempotent)。
  • 201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。
  • 202 Accepted - [*]:表示一個請求已經進入后臺排隊(異步任務)
  • 204 NO CONTENT - [DELETE]:用戶刪除數據成功。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操作,該操作是冪等的。
  • 401 Unauthorized - [*]:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。
  • 403 Forbidden - [*] 表示用戶得到授權(與401錯誤相對),但是訪問是被禁止的。
  • 404 NOT FOUND - [*]:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操作,該操作是冪等的。
  • 406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)。
  • 410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
  • 422 Unprocesable entity - [POST/PUT/PATCH] 當創建一個對象時,發生一個驗證錯誤。
  • 500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將無法判斷發出的請求是否成功。

錯誤處理

狀態碼是4xx時,應返回錯誤信息,error當做key。

{ error: "Invalid API key" }

返回結果

針對不同操作,服務器向用戶返回的結果應該符合以下規范

  • GET /collection:返回資源對象的列表(數組)
  • GET /collection/resource:返回單個資源對象;獲取單條數據
  • POST /collection:返回新生成的資源對象;返回新增的數據
  • PUT /collection/resource:返回完整的資源對象;更新
  • PATCH /collection/resource:返回完整的資源對象;局部更新
  • DELETE /collection/resource:返回一個空文檔;刪除

Hypermedia API

RESTful API最好做到Hypermedia,即返回結果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應該做什么。

{"link": {
? "rel": ? "collection https://www.example.com/zoos",
? "href": ?"https://api.example.com/zoos",
? "title": "List of zoos",
? "type": ?"application/vnd.yourformat+json"
}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454462.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dijkstra算法代碼_數據科學家需要知道的5種圖算法(附代碼)

在本文中,我將討論一些你應該知道的最重要的圖算法,以及如何使用Python實現它們。作者:AI公園導讀因為圖分析是數據科學家的未來。作為數據科學家,我們對pandas、SQL或任何其他關系數據庫非常熟悉。我們習慣于將用戶的屬性以列的形…

大暴搜 chess

仔細讀題,會發現吃掉敵人點對方案數的貢獻很神奇。如果走的空格相同,而走的敵人點不同,對答案無貢獻,而對于走的空格相同,但一種走了敵人點,另一種沒走,算兩個方案。。。。sb出題人語文簡直是和…

網站的SEO以及它和站長工具的之間秘密

博客遷移沒有注意 URL 地址的變化,導致百度和 google 這兩只爬蟲引擎短時間內找不到路。近段時間研究了下國內最大搜索引擎百度和國際最大搜索引擎google的站長工具,說下感受。 百度的站長工具地址:http://zhanzhang.baidu.com/dashboard/ind…

html 縮略圖點擊預覽,[每天進步一點點~] uni-app 點擊圖片實現預覽圖片列表

點擊圖片,實現預覽圖片功能,并且可循環預覽圖片列表!image.png一、多張圖片預覽html代碼js代碼data(){return {photos:[{ src: 圖片路徑1},{ src: 圖片路徑2},{ src: 圖片路徑3},……]}},methods: {// 預覽圖片previewImage(index) {let phot…

git ssh拉取代碼_阿里云搭建git服務器

一.搭建步驟,分為兩步搭建中心倉庫自動同步代碼到站點目錄二.詳細步驟如下1.先檢查一下服務器上有沒有安裝gitgit --version如果出現版本號,說明服務器已經安裝git,如圖所示:2.如果沒有版本信息,則先安裝git&#xff1…

Django REST framework 序列化

創建一個序列化類 使用序列化有四種方式 使用json模塊,完全手寫使用django自帶的序列化模塊 1,# from django.core import serializers 2,# dataserializers.serialize(“json”,book_list)使用REST framework 帶的序列化方法&#xff0c…

基于SIMD的AVS整數反變換算法設計與優化

基于SIMD 的AVS 整數反變換算法設計與優化王玲娟,張剛**作者簡介:王玲娟,(1987-),女,在讀碩士,主要研究方向:視頻解碼算法通信聯系人:張剛,&#…

Word -- 列表重新編號

Word -- 列表重新編號office一言:我小心翼翼地灌溉,一日復一日地期待,那么費力,植成參天的喬木,豈愿見你終有一日從容赴死?問題 word 文檔早就想解決的一個問題,這次遇到了就上網找解決掉了&…

非持久連接和持久連接

非持久連接和持久連接 HTTP既可以使用非持久連接(nonpersistent connection),也可以使用持久連接(persistent connection)。HTTP/1.0使用非持久連接,HTTP/1.1默認使用持久連接。 非持久連接 讓我們查看一下非持久連接情況下從服務器到客戶傳送一個Web頁面…

計算機開機鍵鼠無法識別,我得電腦一開機就檢測不到鍵盤和鼠標

2005-10-18 16:06:131、開機后當出現dos界面時,按一下pause鍵(這個鍵在四個方向鍵的上邊,仔細找就能找到),如果計算機啟動停止,說明你的鍵盤起作用,主板在開機時就已經檢測到了鼠標鍵盤。啟動后不能使用鼠標鍵盤&#…

vs2003 局部友元訪問私有不可訪問_C++ 類:重載運算符與友元

18.類中重載運算符與友元上次節中學習了如何在類中重新定義賦值()運算符,實際上在一個自定義類中除了賦值()運算符外,類的對象是不可以直接使用運算符的,比如你在main函數中寫這樣的代碼會報錯:如果想解決這些報錯問題&#xff0c…

oracle sqlldr (一) 最基本語法

-- Create table create table DEPT2 (DEPTNO NUMBER(2) not null,DNAME VARCHAR2(14),LOC VARCHAR2(1000) ); alter table DEPT2add constraint DEPT_PK primary key (DEPTNO);------demo.ctl LOAD DATA INFILE * --數據在控制文件中 INTO TABLE DEPT2 INSERT ---默認加…

Django REST framework 視圖

上一部分代碼在序列化部分 類繼承順序 ############### mixins.py ################ # 類中調用的方法均在 GenericAPIView 類中實現,所以下列類需要結合 GenericAPIView 使用 class ListModelMixin(object) # 查看繼承類def list(self, reque…

AVS軟件解碼器的優化

AVS軟件解碼器的優化 董斌 , 姜昱明 (西安 電子科技大學計算機學院,陜西 西安,710071)) 摘 要: 主要研究了AVS標準的視頻壓縮部分,指出了影響解碼速度的瓶頸并提出了一種優化方案.使用從程序結構入手結合使用SIMD指令集的方案來優化AVS軟件解碼器.實驗結果表明優化方案可行并且…

IOS7.1.1真的像網上流傳的那么好?沒有任何問題么??

IOS7.1.1推送更新之后到處看到網上說711好的~~ 那么IOS7.1.1真的像網上現在流傳的那么好么? 其實不然,IOS7.1.1目前眾多網友反映說升級ios7.1.1之后APPstore連接不上了,提示無法連接到APPstore。 這個問題也不難解決~還是之前的老辦法~ 那么今…

三校生計算機對口本科有哪些學校,寶山三校生五月對口高考報名

多次復習生活不可能像你想象得那么好,但也不會像你想象得那么糟。我覺得人的脆弱和堅強都超乎自己的想象。多種方式結合起來復習單一的復習方法,易產生消極情緒和疲勞,如果采用交談復習法、討論復習法、自我檢查復習法多樣化的復習方法&#…

localhost 已拒絕連接_【Python】MongoDB數據庫的連接和操作

安裝Python 要連接 MongoDB 需要 MongoDB 驅動。pip安裝:python3 -m pip3 install pymongo創建數據庫import pymongo myclient pymongo.MongoClient("mongodb://localhost:27017/")mydb myclient["loaderman"]注意: 在 MongoDB 中&#xff0c…

checkbox已設置為checked--true-但不勾選問題解決方法(只第一次勾選有效)

一、出現的問題及解決方法: 今天在寫一個table相關插件的時候無意中發現了這樣一個問題,記得以前在寫這種控制checkbox選中與非選中的代碼時并沒有這種bug,當時也是用的checked屬性,而現在卻行不通了。 于是乎做了以下測試&#x…

Python 錯誤和異常小結[轉]

原文鏈接 http://blog.csdn.net/sinchb/article/details/8392827 事先說明哦,這不是一篇關于Python異常的全面介紹的文章,這只是在學習Python異常后的一篇筆記式的記錄和小結性質的文章。什么?你還不知道什么是異常,額... 1.Py…

Django REST framework 認證、權限和頻率組件

認證與權限頻率組件 身份驗證是將傳入請求與一組標識憑據(例如請求來自的用戶或其簽名的令牌)相關聯的機制。然后 權限 和 限制 組件決定是否拒絕這個請求。 簡單來說就是: 認證確定了你是誰權限確定你能不能訪問某個接口限制確定你訪問某…