1.路徑引數
宣告路徑引數時,可以使用python格式字串使用的相同語法宣告路徑「引數」或「變數」
from fastapi import fastapi
)"/items/"
)async
defread_item
(item_id)
:return
**中沒有規定引數item_id的資料型別
from fastapi import fastapi
)"/items/"
)async
defread_item
(item_id:
int)
:return
**中規定了item_id的引數型別為int,如果傳入的引數型別不符合規定的型別,則會返回錯誤,如下:
]}
該錯誤會清楚的指明驗證未通過的點
注意:建立路由的時候,你需要對路由的操作順序進行調整,例如,您用/ users / me這個路由去獲取當前的所有使用者資訊,然後通過/ users / 這個路由來獲取某個使用者id的資訊,但是在fastapi中的路由操作是按順序來查詢的,如果/ users / 這個路由寫在了/ users / me的前面,當您請求/ users / me時候,預設的會去匹配/ users / 的執行方法,此時的user_id的值是me
from fastapi import fastapi
)"/users/me"
)async
defread_user_me()
:return
"/users/"
)async
defread_user
(user_id:
str)
:return
from enum import enum
from fastapi import fastapi
class
modelname
(str
, enum)
: alexnet =
"alexnet" resnet =
"resnet" lenet =
"lenet"
)"/model/"
)async
defget_model
(model_name: modelname)
:# 規定了model_name 的資料型別在modelname中選擇
if model_name == modelname.alexnet:
# model_name 指向modelname的列舉成員
return
if model_name.value ==
"lenet"
:# model_name.value是獲取列舉成員的值
return
return
# model_name,列舉型別的成員可以作為返回值,返回時,自動對應該列舉型別成員的值
from fastapi import fastapi
)"/files/"
)# path 定義了引數file_path是個路徑,可以將引數以『/』開頭,url就是/files//home/johndoe/myfile.txt
async
defread_user_me
(file_path:
str)
:return
2.查詢引數
當你宣告不屬於路徑引數的其他函式引數時,他們就自動解釋為查詢引數,也就是query引數
from fastapi import fastapi
)"/items/"
)async
defread_item
(skip:
int=
0, limit:
int=10)
:return
如在get請求中,在url中?後面的所有用&分割的鍵值對引數都是查詢引數,例:
/user?username=zhangsan&pwd=zweasd此時的查詢引數就是username和pwd,對應的值是zhangsan, zweasd,所有適應於路徑引數的所有過程都適用於查詢引數
設定查詢引數的預設值:
比如在註冊的時候,有些引數是必填的,有些引數可以不填,但是要給定乙個預設值,這時候,這些不是必填的引數可以不用出現在請求路由的引數列表裡面,可以如下設定預設引數:
from fastapi import fastapi
)"/items/"
)async
defread_item
(item_id:
str, name:
str=
'zhangsan'
, age:
int=18)
:return
""" item_id: 路徑引數,型別為str,必選
name: 查詢引數,型別為str,可選,預設值為zhangsan
age: 查詢引數,型別為int,可以,預設值為18
"""
查詢引數資料型別轉換:
from fastapi import fastapi
)"/items"
)async
defread_item
(name:
str=
none
, is_delete:
bool
=false):
item =
if name:
item.update()if
not is_delete:
item.update(
存在".format
(name)})
return item
""" 此時請求 http:.0.1:8000/items?name=zhangsan&short=0
請求引數short都會進行資料轉換,轉換為true或者false
"""
可選的型別宣告:
如果宣告查詢引數的時候,spik: int = none, 因為none不是int型別,這樣會報如下錯誤:
incompatible types in assignment (expression has type
"none"
, variable has type
"int"
)
可以用optional 告訴 mypy,這個值可能是 none:
from typing import optional
from fastapi import fastapi
)"/items/"
)# 路徑引數不可以用optional
async
defread_user_item
(item_id:
str, limit: optional[
int]
=none):
item =
return item
3.boby引數
不能通過get請求傳送boby引數,常見傳送boby引數的請求方法有,post, put, delete, patch
請求體引數也可以和查詢傳參一樣,定義在宣告的函式中,當請求體(boby)引數過多時,一般會引用pydantic中basemodel去定義boby引數,**如下:
from fastapi import fastapi
from pydantic import basemodel
class
item
(basemodel)
: name:
str description:
str=
none
price:
float
tax:
float
=none
)"/items/"
)async
defcreate_item
(item: item)
:return item
"""可以用none預設賦值,去定義引數是否是必填
"""
FastAPI學習 2 fastapi引數詳解
1.檢視fastapi原始碼 引數如下 from fastapi import fastapi from starlette.responses import jsonresponse 此型別不可少 from starlette.routing import route request引數不可少 a...
Vue學習之路 3 路由
在乙個系統中,一般會由很多頁面組成,當乙個頁面要跳轉到另外乙個頁面的時候是通過改變url路徑來實現的,這個時候vue需要知道當前url對應的那個元件頁面,這個控制者就是vue router。使用vue router需要載入vue router.js。csdn資源 布局 主頁資訊 設定元件html頁面...
3 路由配置
一 路由配置 path path 函式 匯入 from django.urls import path 語法 path route,views,name none 引數 1.route 字串型別,匹配的請求路徑 2.views 指定路徑所對應的檢視處理函式的名稱 3.name 為位址起別名,在模版中...