系列文章:
FastAPI 學習之路(一)fastapi--高性能web開發框架
本次分享的是分享的是查詢參數,字符串的校驗。
我們看一個demo。
from typing import Optional from fastapi import FastAPI app = FastAPI() @app.get("/items/") def update_items(m: Optional[str] = None): results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]} if m: results.update({"shanghai": m}) return results
我們不去傳遞參數的時候請求下,
當我們傳遞了m的時候,我們看下結果。
我們看了下,結果是是更新了。
增加校驗 ,我們打算添加約束條件:即使 m 是可選的,但只要提供了該參數,則該參數值不能超過2的長度。
我們看下如何實現
from typing import Optional from fastapi import FastAPI,Query app = FastAPI() @app.get("/items/") def update_items(m: Optional[str] = Query(None, max_length=2)): results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]} if m: results.update({"shanghai": m}) return results
我們傳遞下看看是否滿足,我們傳遞一個超過2個字符串的。結果返回如下。
這是超過了長度,當我們不超過長度的時候呢,就可以正常更新。
如果我們要求最長的不能超過10個字符,最短不能低於5個字符串怎么實現呢。
from typing import Optional from fastapi import FastAPI,Query app = FastAPI() @app.get("/items/") async def update_items(m: Optional[str] = Query(None, max_length=10,min_length=5)): results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]} if m: results.update({"shanghai": m}) return results
我們看下傳遞低於5個。
長度大於10個,接口已經給我們返回的錯誤的原因。
合適的長度,我們看下接口的請求
我們還有這樣的一個需求,我們需要匹配參數,參數開頭包含name的。如何實現。
from typing import Optional from fastapi import FastAPI,Query app = FastAPI() @app.get("/items/") async def update_items(m: Optional[str] = Query(None, regex='^name',max_length=10,min_length=5)): results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]} if m: results.update({"shanghai": m}) return results
我們請求下,看下是否滿足,當我們請求不滿足需求的時候,
那我們看下,滿足需求的請求,如何返回。
我們看到了,接口可以正常返回。
文章首發在公眾號,歡迎關注。