一、什么是接口
硬件接口比如:USB、耳機、水龍頭、電燈泡
軟件接口比如:api.github.com 連接了服務端和客戶端、
UI user interface 用戶接口、 用戶界面、
函數 可以公開訪問的才能是接口 、
API 全稱:application programming interface,應用程序可編程接口,應用程序寫代碼,可以控制的接口
連接了兩個不同的事物、系統,可以進行數據傳輸 。
接口,兩個不同事物之間進行適配的一種工具,規范和協議,
二、什么是網絡請求
1、客戶端 主要進行前端操作,主動請求 。客戶端(Client)或稱為用戶端,是指與服務器相對應,為客戶提供本地服務的程序
2、服務端 后端主要被動接受來自前端請求。服務器端是為客戶端服務的,服務的內容諸如向客戶端提供資源,保存客戶端數據
三、HTTP請求、協議
1、HTTP是無狀態的
1)HTTP 每個請求都是獨立的
2)沒有記性
3)實現一個有狀態的,一個無狀態的,直接使用 requests 發起的請求就沒有狀態 即使你先調用登錄接口 再調用其他接口 那么后面這個接口也會提示你請登錄
2、HTTP協議分為三個部分
1)請求首航
1)URL 域名地址
2)請求方法 GET (GET獲取資源)沒有請求體,他的參數都放在URL里面,用?和&分隔
POST 、POST創建資源 有請求體,有請求體意味着可以添加更多的數據,可以放在URL中,也可以已鍵值對的方式傳參
PUT、DELETE..
為什么說POST 比 GET 更安全,1、GET請求都放在URL中一眼就才看出來了 。
3)協議版本 用的比較多的版本是:HTTP/1.1
請求網站是:域名地址
遠程地址是:IP地址
2)請求參數
body參數方式:
Text:text/plain
Form:application/x-www-form-urlencoded
JSON:application/json
File:不確定
3)請求頭
user-agent 1、用戶代理 2、手機。瀏覽器,postman,jemter
content-type 請求格式
cookie
4)請求體 請求體有可能是空的
3、HTTP下層協議是由:tcp/ip
tcp:打包,使用存儲數據,打包成一個一個很小的包
ip:確認地址,通過ip進行傳輸
四、響應
1、響應首航
1)協議版本號
2)狀態碼:內部人員規定的一種專門的信息格式
3)狀態碼含義
1XX 含義:lnformational信息,啥都不做,告訴client,信息收到了,后續會處理
2XX 含義:Successful 成功,啥都不做,告訴client,請求已正確處理
3XX 含義:Redirection 重定向,重新請求返回的新地址-》才能獲取真正需要的數據,告訴cilent,你需要的內容,由於一些原因,比如地址已經發生變化,然后返回該內容的新地址
4XX 含義:Client Error客戶端的錯誤,確保用正確的參數和信息,重新請求。告訴client,請求已正確處理
5XX 含義:Server Error服務器端的錯誤,(一般來說)都無需啥操作->往往需要服務器端該了bug后,重新發送請求,需要服務器Server端自己找到具體出了什么錯,往往是服務端的代碼bug導致了出錯
4)常用的狀態碼及含義
2XX 200 OK 服務器成功返回用戶請求的數據,往往為力簡化處理,POST 創建成功后應該返回 201 資源創建成功
201 CREATED 通過POST或PUT創建資源成功
204 NO CONTENT 資源修改成功,但是沒有返回內容,常用於DELETE操作的返回
3XX 重定向,為力完成請求,必須進一步執行的動作
301 永久重定向
302 臨時重定向
304 上次訪問服務器沒有進行內容的修改,就把緩存里面的內容獲取出來了
4XX 401 UNAUTHORIZED 沒有權限訪問該資源,典型情況:用戶沒有登錄,沒有獲取的對應access token而直接訪問某資源
403 FORBLDDEN 禁止訪問 用戶雖然已經登錄,但是去刪除需要更高的權限才有資格操作
404 NOT FOUND 找不到資源
405 METHOD NOT ALLOWED 方法不允許, 某個資源不允許發送post請求,但是你發起了post請求
5XX 500 INTERNAL SERVER ERROR 服務器內部錯誤,最常見的原因是:服務器掛了,比如傳遞參數中的有些參數是空的,導致后台代碼無法解析,出現異常而崩潰
5)響應頭
content-type 返回數據的格式
set-coolie
6)響應體
返回的數據 ,json、text、html
五、域名和ip地址的區別
1、域名更好記憶
2、IP地址不好記憶
3、訪問域名地址的時候會轉換成IP地址進行傳輸
4、使用DNS解析,把域名轉換成IP地址
5、端口號,為了區分不同的服務
六、cookie, session 和 token
1、cookie
英文翻譯:小餅干、小甜點
cookie是讓服務器記住你,記錄瀏覽器的信息
cookie 存儲在瀏覽器(服務端)
cookie 有效期默認是關閉瀏覽器自動清除,也可以自定義設置
2、session
在(服務器)記住用戶狀態的信息就叫做:session
如果使用session對象發起請求,那么你只要先發起登錄請求,在訪問其他請求接口,都能正常訪問
用來 服務器驗證
服務器也存儲一份,用來驗證發送過來的 cookie 是不是合法、符合規則的
3、token
保存在客戶端本地 local_srotage
是一種令牌,不管他什么身份
token 可以跨平台,手機、瀏覽器、電視、電腦 等等。
token 生成的口令是會變的,
關閉瀏覽器不會刪除 token 只會失效
不管是 cookie, session 和 token 都是服務器生成的
七、輸入URL后的過程
1、域名解析:DNS解析,把域名解析成服務器IP地址
2、發起TCP鏈接的三次握手(下面會寫)
3、建立TCP鏈接后發起HTTP請求
4、服務端響應HTTP請求,返回響應報文
5、瀏覽器頁面渲染
6、斷開 TCP 鏈接
八、三次握手
任何的請求都是從服務端開始的
第一次握手:建立連接時,客戶端向服務端發送請求報文(SYN)“我想建立連接”
第二次握手:服務器收到請求報文后,如同意連接,則向客戶端發送確認報文(SYN / ACK)“同意建立連接”
第三次握手:客戶端收到服務器的確定后,再次向服務器發送確定報文,完成連接(ACK)
三次握手主要是為了防止已經失效的請求報文文字段發送給服務器,浪費資源
九、 四次揮手
第一次揮手:客戶端想分手,發送消息(FIN)給服務器
第二次揮手:服務器通知客戶端已經接受的揮手請求,返回確認信息(ACK),但還沒做好分手准備
第三次揮手:服務器已經做好分手准備,通知客戶端(FIN)
第四次揮手:客戶端發送消息給服務器(ACK),確認分手,服務器關閉連接