FastAPI
Starlette負責web部分(Asyncio)
Pydantic負責資料部分(型別提示)
FastAPI是站在前人肩膀上,整合了多種框架的優點的新秀框架。它出現的比較晚,2018年底才釋出在github上。廣泛應用於當前各種前後端分離的專案開發,測試運維自動化以及微服務的場景中。
預備知識點
http協議
1.什麼是請求頭請求體,響應頭響應體
2.URL地址包括什麼
3.get請求和post請求到底是什麼
4.Content-Type是什麼
-
HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於全球資訊網(WWW:World Wide Web)伺服器與本地瀏覽器之間傳輸超文字的傳送協議。
- 超文字:超文字就是指“含有指向其他資源連結”內容的文字。
- 大概就是,不僅僅是文字,還有多媒體:影片、圖片、動畫等。
- 協議:HTTP協議就是伺服器(Server)和客戶端(Client)之間進行資料互動(相互傳輸資料)的一種協議。
- 我們可以將Server和Client進行擬人化,那麼該協議就是Server和Client這兩兄弟間指定的一種互動溝通方式。
- 超文字:超文字就是指“含有指向其他資源連結”內容的文字。
-
HTTP是一個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。
- 它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。
- HTTP協議工作於客戶端-服務端架構為上。
- 瀏覽器作為HTTP客戶端透過URL向HTTP服務端即WEB伺服器傳送所有請求。
- Web伺服器根據接收到的請求後,向客戶端傳送響應資訊。
一個完整的URL包括:協議、ip、埠、路徑、引數
例如: https://www.baidu.com/s?wd=yuan 其中https是協議,www.baidu.com 是IP,埠預設80,/s是路徑,引數是wd=yuan
請求方式: get與post請求
- GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditBook?name=test1&id=123456.
- POST方法是把提交的資料放在HTTP包的請求體中.
- GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制,且攜帶的請求資料不可以明文方式連線在url中。
響應狀態碼:狀態碼的職責是當客戶端向伺服器端傳送請求時, 返回的請求結果。藉助狀態碼,使用者可以知道伺服器端是正常處理了請求,還是出現了錯誤。狀態碼如200 OK,以3位數字和原因組成。
Request
Client->Server
Client->Static->(uvicorn)->[Router->Function->Database]
Response
Server->Client
[Database->Function->Router]->(uvicorn)->Static->Client
Request First Row
Method IP Path Query
Request Headers
Content-type
- application/json
- application/x-www-form-uniencoded
Request Body
Parameter
- Path /
- Query
Response First Row
Response Headers
Response Body
from fastapi import FastAPI
from api.student import api_student
app = FastAPI()
app.include_router(api_student, prefix=“student”, tags=[“選課系統的學生介面”])
from fastapi import APIRouter
from pydantic import BaseModel
api_student = APIRouter()
class UserIn(BaseModel):
username: str
description: Optional[str]=None
email: EmailStr
full_name: Optional[str]=None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: Optional[str]=None
@app.post(“/user”, response_model=UserOut)
async def create_user(user: UserIn)
return {
“user”: user
}
FESTful API principle
get
/student 檢視學生列表
post
/student 新增學生
get
/student/1 檢視id=1的學生
put
/student/1 更新id=1的學生
delete
/student/1 刪除id=1的學生
ORM
ORM(Object Relationship Mapper)