網上整理的對于Rest和Restful api的理解 - 那啥快看 - 博客園

一、什么是Rest?

REST不是"rest"這個單詞,而是幾個單詞縮寫 -- REpresentational State Transfer 直接翻譯:表現層狀態轉移,但這個翻譯正常人根本看不懂,找到的一種最好理解的說法是,URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。

REST成熟度的四個層次

? 第一個層次(Level0)的Web 服務只是使用 HTTP 作為傳輸方式,實際上只是遠程方法調用(RPC)的一種具體形? 式。SOAP和 XML-RPC都屬于此類。

? 第二個層次(Level1)的Web 服務引入了資源的概念。每個資源有對應的標識符和表達。

? 第三個層次(Level2)的Web 服務使用不同的 HTTP 方法來進行不同的操作,并且使用HTTP 狀態碼來表示不同的結果。如 HTTPGET 方法來獲取資源,HTTPDELETE 方法來刪除資源。

? 第四個層次(Level3)的Web 服務使用 HATEOAS。在資源的表達中包含了鏈接信息。客戶端可以根據鏈接來發現可以執行的動作。

二、Restful api接口有什么特征?

REST描述的是在網絡中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網絡接口)。

1.URL的根路徑

http://api.chesxs.com/v1

2.需要有api版本信息

http://api.chesxs.com/v1

3.URL中只使用名詞指定資源,不用動詞,且推薦使用復數

服務(Server)提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。“資源”是REST架構或者說整個網絡處理的核心。比如:

http://api.chesxs.com/v1/cars // 獲取某個賬戶下的車輛列表
http://api.chesxs.com/v1/fences // 獲取某個賬戶下的圍欄列表

4. 用HTTP協議里的動詞來實現資源的添加,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉

復制代碼

GET 用來獲取資源,
POST 用來新建資源(也可以用于更新資源)。比如:POST http://api.chesxs.com/v1/car: 添加車輛
PUT 用來更新資源,
DELETE 用來刪除資源。比如:DELETE http://api.chesxs.com/v1/cars 刪除某輛車 (在http parameter指定好友id) 
UPDATE http://api.chesxs.com/v1/fence 更新圍欄信息 錯誤使用: GET http://api.chesxs.com/v1/deleteCar 刪除車輛

復制代碼

5.GET應該是安全的,不會改變資源狀態

?這個應該很好理解,get的時候就只是獲取資源,而不涉及添加、更新、刪除資源。

6.使用正確的HTTP Status Code返回狀態碼

常用的有404,200,500,400等等。

7.過濾信息

如果記錄數量很多,服務器不可能都將它們返回給用戶。API應該提供參數,過濾返回結果。

下面是一些常見的參數。

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

8.規范返回的數據

為了保障前后端的數據交互的順暢,建議規范數據的返回,并采用固定的數據格式封裝。

接口返回模板:

復制代碼

{status:0,data:{}||[],msg:’’
}

復制代碼

?

?

總結,看一個標準的restful api要可以做到

看Url就知道要操作的資源是什么,是操作車輛還是圍欄
看Http Method就知道操作動作是什么,是添加(post)還是刪除(delete)
看Http Status Code就知道操作結果如何,是成功(200)還是內部錯誤(500)

?參考文章:https://www.cnblogs.com/bndong/p/6139598.html

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

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

相關文章

P1101 單詞方陣(DFS)

題目描述 給一n \times nnn的字母方陣,內可能蘊含多個“yizhong”單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,…

企業級rancher搭建Kubernetes(采用rancher管理平臺搭建k8s)

一、簡介 Rancher簡介 來源官方:https://www.cnrancher.com/ Rancher是一個開源的企業級容器管理平臺。通過Rancher,企業再也不必自己使用一系列的開源軟件去從頭搭建容器服務平臺。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部…

[工具]java_sublime的快速使用

目錄 使用 : 怎么運行: 調整字體: 使用 : 新建--->寫好代碼后-->另存為尾綴是.java的文件 怎么運行: 在你另存為的目錄下cmd調用控制臺輸入dos指令--->執行javac 文件名.java(有.java尾綴)(編譯為.class文件)--->java 文件名(沒有.class尾綴設計者認為執行的是…

基于SOA的銀行系統架構

Part-1 【簡述】 1.通過引入面向服務架構(SOA),企業服務總線(ESB),適配器(Adapter)及面向構件等技術,嘗試打造一個統一業務流程服務平臺,實現面向流程的服務…

一次前后端分離的實踐

前后端分離該如何做? 這個問題,不同的技術人員,由于所處的崗位不一樣,給出的答案都不一樣。 前后端分離的問題,不僅僅是技術上的選型問題,還涉及到整個團隊在認知、職責、流程上面重新定義的問題,這也是為…

queryList爬蟲獲取內容的幾種方法總結 queryList給抓取的內容增加html追加元素html 代碼實例...

//簡略內容: 1. $data1 $ql->find(.two img)->map(function($item){return $item->alt; }); // 等價下面這句話 $data2 $ql->find(.two img)->attrs(alt);2. $texts $ql->find(.two>a)->texts(); $htmls $ql->find(#one span)->htmls();3. $…

C++解析-外傳篇(1):異常處理深度解析

0.目錄 1.異常的最終處理 2.結束函數terminate() 3.小結 1.異常的最終處理 問題: 如果在main函數中拋出異常會發生什么? 如果異常不處理,最后會傳到哪里? 下面的代碼的輸出什么? 示例——異常的最終處理?&a…

《淺談架構之路:前后端分離模式》 - 山人行 - 博客園

前言:分離模式 對前后端分離研究了一段時間,恰逢公司有一個大項目決定嘗試使用前后端分離模式進行,便參與其中。該項目從2016年初立項至今,平平穩穩得度過,但也涌現出越來越多的問題,絕對不是說前后端分離模…

springboot快速集成swagger

今天技術總監說:小明,我們本次3.0改造,使用swagger2.0作為前后端分離的接口規范,它可以一鍵生成前后端的API,一勞永逸……小明:??? Spring Boot 框架是目前非常流行的微服務框架&…

php curl處理get和post請求

CURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL 庫。使用PHP的CURL 庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然后分析一下你所抓取的網頁&#xff0…

【Web】JavaWeb項目為什么我們要放棄jsp?為什么要前后端解耦?為什么要前后端分離?2.0版,為分布式架構打基礎。 - CSDN博客

前戲 前后端分離已成為互聯網項目開發的業界標準使用方式,通過nginxtomcat的方式(也可以中間加一個nodejs)有效的進行解耦, 并且前后端分離會為以后的大型分布式架構、彈性計算架構、微服務架構、多端化服務(多種客戶…

MongoDB升級導致啟動失敗

起因 最近項目使用MongoDB,但是作為一個技術菜鳥,NoSQL數據庫我還真不會用,于是我就在自己的阿里云服務器上安裝了一個MongoDB4.0.9。 現象 但是當我使用yum -y update升級以后,MongoDB無法啟動了,即使重裝刪除了MongDB的文件了還…

測者的測試技術手冊:揭開java method的一個秘密--巨型函數

揭開java method的一個秘密:巨型函數 相信,很多人都不知道Java的Method的上限為64K。本文將超過這個上限的函數叫做巨型函數。 巨型函數的問題 1、如果代碼超過了這個限制,Java編譯器就報"Code too large to complier"的錯誤。 2、…

前端攻略系列(二) - 前端各種面試題

幸運且光榮的被老大安排了一個任務 - “去整理些前端面試題”。年前確實不是招人的好時候,所以我們前端團隊經過了超負荷的運轉,終于堅持過了春節。春節以后就開始招人啦,這套題考察的目標就是基礎基礎再基礎,嘿嘿。 事先聲明&…

html 初識

一、web請求流程模擬 python編寫的簡易服務器應用程序 import socketserversocket.socket() ip_port (127.0.0.1,8080) server.bind(ip_port) server.listen()while 1:conn, addr server.accept()from_browser_msgconn.recv(1024)print(from_browser_msg)conn.send(bHTTP/1.1 …

Iframe的那些事

在web開發中,經常會用到iframe,難免會碰到需要在父窗口中使用iframe中的元素、或者在iframe框架中使用父窗口的元素 js 在父窗口中獲取iframe中的元素 1、 格式:window.frames["iframe的name值"].document.getElementByIdx_x(…

異常處理try...catch...throw

C 引入了異常處理機制。其基本思想是:函數 A 在執行過程中發現異常時可以不加處理,而只是“拋出一個異常”給 A 的調用者,假定為函數 B。 拋出異常而不加處理會導致函數 A 立即中止,在這種情況下,函數 B 可以選擇捕獲 …

Makefile 中:= ?= += =的區別

是最基本的賦值: 是覆蓋之前的值? 是如果沒有被賦值過就賦予等號后面的值 是添加等號后面的值轉載于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10118039.html

原生JS寫Ajax的請求函數

本文主要介紹了如何通過原生JavaScript封裝ajax請求,文中給出了具體的實現代碼和詳細的解釋,希望對你有所幫助。 一、JS原生Ajax ajax:一種請求數據的方式,不需要刷新整個頁面; ajax的技術核心是 XMLHttpRequest 對象&…

軟件工程--第十三周學習進度

第十三周代碼量258 所花時間 6h博客量 2篇了解到的知識點 在尋找“水王”程序編寫時,學習了一種新的設計思想,兩兩刪除法,最后剩下的就是水王。這種設計思想,感覺可以用到多種編程,感覺很有意思。轉載于:https://www.c…