一.restful是什麼?
本質上是一種軟件架構風格,核心是面向資源去設計API
設計概念和準則
1.網絡上的所有事件都可以被抽象爲資源
2.每一個資源都有唯一的資源標識,對資源的操作不會改變這些標識
3.所有的操作是無狀態的
二.爲什麼要使用restful?
解決的問題有:
1.減低開發的複雜性
2.提高系統的可伸縮性
三.HTTP協議-URL
http 是一個屬於應用層的協議,特點是簡捷、快速
schema://host[:port]/path[?query-string[#anchor]
achema:指定低層使用的協議(例如:http,https,ftp)
host 服務器的IP地址或者是域名
port 服務器端口HTTP 80 HTTPS 443
path 訪問資源的路徑
jquery-string 發送給http服務器的數據
anchor 苗點
請求
組成格式:請求行、消息報頭、請求正文
請求行
格式:method request-url HTTP-Version CRLF
舉例 GET /HTTP/1.1 CRLF
請求方式
GET 請求獲取Request-URL所標識的資源
POST 在Request-URL所標識的資源後附加新的資源
HEAD 請求獲取由Request-URL所標識的資源的響應消息報頭
PUT 請求服務器存儲一個資源,並用Request-URL作爲其標識
DELETE請求服務器刪除請求URL所標識的資源
OPTIONS 請求查詢服務器的性能或者查詢與資源相關的選項和需求
響應
組成格式:請求行、消息報頭、請求正文
請求行
格式:HTTP-Version Status-Code Reason-Phrase CRLF
舉例 HTTP/1.1 200 OK
常見CODE
200 ok
301 永久性重定向
302 臨時性重定向
401 服務器收到,拒絕請求
403 沒有訪問權限
404 找不到頁面
409 客戶端沒等服務器回覆,直接強關了請求
500 程序錯誤
502 web服務器未啓動啥的,網關錯誤
503 服務器性能瓶頸,不能處理後面的求
504 網關超時,一般都是web服務器已經找到上游,但上游一直不給回覆,一般開發時都是SQL過慢,無回覆
四.restful架構與其他架構的區別
1.SOAP webService
webService 是一種跨編程語言和跨操作系統平臺的遠程調用技術
通過HTTP協議發送請求和接收結果時採用XML格式封裝,並增加一些特定的HTTP消息頭,這些特定的HTTP消息頭和內容格式就是SOAP協議
安全性 速度要求高,安全要求不高的場景,可用restful,
五.如何設計restful API
資源路徑(URI)
比如:場景、版本號等
HTTP動詞
比如:GET POST PUT DELETE等
過濾信息
如果數據很多,服務器要根據API提供的參數,過濾返回的結果,比如分頁啥的
狀態碼
客戶端有問題 401沒有提供任何可驗證的參數,直接拒了
錯誤處理
返回JSON或XML
返回結果