HTTP協議
- HTTP ( HYper Text Transfer Protocol)超文本傳輸協議,用於從萬維網(www)服務器傳輸資源到本地瀏覽器的傳送協議
- HTTP 協議是基於 TCP 協議,默認是 80 端口。主要是用來規定客戶端和服務端的數據傳輸格式
- HTTP 是基於請求與響應模式的、無狀態的、無連接的應用層協議
接口是什么?-----接口相當於獲取資源的通道
解釋:接口就是一個通道,前端傳數據到后端,需要通道進行傳輸,后端校驗、分析,然后返回響應,前端收到響應,判斷響應內容,最后在前端顯示;
一個接口就相當於會去調用后端的一個函數,而函數將而返回值作為響應報文把他返回給客戶端;
相當於客戶端,瀏覽器,APP發送的請求;
一、請求
請求的過程一定是通過一個 url 去請求的
1.URL組成
例如某個 url 地址:
http://127.0.0.1:8088/docs/
格式:協議 + 域名或IP地址 + 請求路徑
域名會被DNS服務器解析為IP地址
- 一個url地址就是一個接口,接口當中一般運用最多的就是 HTTP 和 HTTPS 協議,是一種超文本傳輸協議;
- url 域名的后面都是路徑
- HTTP和HTTPS的區別:
- HTTPS是一個加密協議,經過一些算法加密,相比於HTTP更加安全;
- HTTP默認端口80
- HTTPS默認端口號443
2.請求結構
- 請求首行(請求行)
- 請求頭(消息報頭)
- 空一行
- 請求體(請求正文)
3.請求首行
請求首行包括:請求方法(get) + 請求地址 + 協議版本號(HTTP/1.1)
- 請求方法
- GET:請求讀取由URL所標識的信息
- POST:給服務器發送數據
- HEAD:請求讀取由URL所有標識的信息的首部
- PUT:在指明的URL下存儲一個文檔-- restful-- 替換資源
- DELETE:刪除指明的URL .所標識的資源
- CONNECT:用於代理服務器
- OPTION:請求一些選項的信息
- TRACE:用來進行環回測試的請求報文
-
- get
- 獲取服務器資源(取回數據)
- 對應sql語句中的select
- 沒有請求體
- 傳參:請求參數(query string查詢字符串)放在url中以?key1=value.........的形式
- 不要在處理敏感數據時使用,如:賬號密碼
- post
- 往往創建(新增)資源
- 對應 sql 語句中的 insert into
- 有請求體
- 請求參數
- 在請求體中的參數(請求體中)
- get
-
-
-
- text/plain文本傳輸為HTTP的報文體中是純文本,沒有任何格式和修飾,服務端就會拿走文本自己處理;
- Form這個是最常用的傳遞參數方式,HTML 中都有form標簽與其對應,其本身采用Key-Value的方式傳遞參數;
- json格式比Form更加有效的地方是可以傳送Object;
- File傳輸單個文件
- 根據Content-type不同,服務器去讀取HTTP Body中參數的方式也不一樣
-
- put
- 修改服務器的資源
- 對應sql語句總的update
- 有請求體、有參數
- delete
- 刪除服務器的資源
- 對應sql語句總的delete from
- 有請求體、有參數
-
- 請求地址
- 協議版本號(HTTP/1.1)
4.請求頭(消息報頭)
- User-Agent :產生請求的客戶端類型。
- Accept :客戶端可識別的內容類型列表。
- Host :請求的主機名,允許多個域名同處一個IP地址,即虛擬主機。
- Accept-Encoding :客戶端使用的編碼環境和編碼方式
- Accept-Language :客戶端語言環境
- Accept-Charset :client接收的字符集
- Authorization :授權信息,一般用於存放授權之后的信息
- Authentication :客戶端提供給服務器,進行權限認證的信息
- Connection :表示是否需要持久連接
- Content-Length :表示請求數據正文的長度
- Cookie :這個與服務器端做交互的,存儲保持會話的重要信息- login (用戶名+密碼)
- Referer :表示該次請求的來源,一 般用於做防盜鏈
- content- type :傳給服務器的內容的格式。請求體的內容類型, 如application/x www-form-urlencoded
- Content- length :請求體的數據長度
- Cache-control :緩存機制: Cache-control: no chach
- Pragma :防止頁面被緩存,和Cache-control: no chach一樣
User-Agent :(譯:有責兒.哎真特)客戶端類型
-
- 瀏覽器、手機是客戶端
cookie:
-
- 相當於身份信息,一般放在請求頭
- 不會保存用戶的非敏感信息
5.請求體(請求正文)
- get 請求絕大多數沒有請求體
- 主要作用攜帶請求參數
二、響應報文
響應報文是服務器發出的
1.請求結構
- 響應首行(狀態行)
- 響應頭(消息報頭)
- 空一行
- 響應體(響應實體)
2、響應首行(狀態行)
包括:
- 協議版本號
- 響應的狀態嗎
最常用的狀態碼及含義:
- Successful- 2xx:成功類,行為被成功地接受、理解和采納
- 200 OK
- 服務器成功返回用戶請求的數據
- 往往為了簡化處理
- POST創建 成功后應該返回201的
- 200 OK
-
- 404 NOT FOUND
- 找不到資源或路徑路徑不存在
- 404 NOT FOUND
-
- 500 INTERNAL SERVER ERROR
- 服務器內部錯誤
- 最常見的原因是:服務器內部掛了
- 比如你傳遞參數中有些參數是空,而導致后台代碼無法解析,出現異常而崩潰
- 500 INTERNAL SERVER ERROR
次常用的響應碼及含義:
- restful 風格的api接口
- Successful - 2xx: 成功類,行為被成功地接受、理解和采納
- 201 CREATED
- 通過POST或PUT創建資源成功
- 204 NO CONTENT
- 資源修改成功,但是沒有返回內容
- 常用於DELETE操作的返回
- 201 CREATED
- Redirection. - 3xx:重定向類,為了完成請求,必須進一步執行的動作
- 301 永久重定向
- 302 臨時重定向
- 304 緩存,資源沒有被改變
- Client Error - 4xx: 客戶端錯誤類,請求包含語法錯誤或者請求無法實現
- 401 UNAUTHORIZED
- 沒有權限訪問該資源
- 典型情況:用戶沒有登錄,沒有獲得對應的access token而直接訪問某資
- 403 FORBIDDEN
-
禁止訪問
- 典型情況:雖然用戶已登錄,但是去更新/刪除需要更高權限才能操作的資源
- 405 METHOD NOT ALLOWED
- 方法不允許
- 舉例:比如某個資源不允許POST請求,但是你確發起了POST請求
- 401 UNAUTHORIZED
3、響應頭(消息報頭)
- Server :http服務器的軟件信息
- Data :響應報文的時間
- Expires :指定緩存過期時間
- Set- Cookies :設置cookies, 服務器返回的文本
- Last- modify :資源最后修改時間
- Content-type :響應的類型和字符集: content-type: text/html; charset=utf-8
- Content-length :內容長度
- Connection :一般都是keep-alive ,保持TCP連接不關閉,但是不會長久保持連接,服務器可設置
- Location :指明重定向的設置,新的URL地址
Content-Type(譯:康泰的太婆)
-
- 代表:響應報文返回的數據類型/json格式、HTML格式頁面報文
set-Cookie
-
- 服務器將用戶信息(session-id)放到Set-Cookie,瀏覽器拿到 set—cookie 然后將其放到瀏覽器的 Cookie 中保存
4、響應體(響應實體)
- 響應數據
- 返回 html 頁面或者 json 格式數據
- 前后端分離 開發模式
- 是以json格式返回數據
- 前后端不分離 開發模式
- 返回HTML的頁面,需要后端和前端人員配合
- 204 沒有響應體,主要看需求文檔和開發心情
*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/ 謝謝!!*******