前言
HTTP協議中,GET請求的參數放在 URL 后面,一般也叫query params 查詢參數。
查詢參數
# -*- coding:utf-8 -*-
from fastapi import FastAPI # 導入FastAPI
import uvicorn # uvicorn:主要用於加載和提供應用程序的服務器
from enum import Enum
app = FastAPI() # 創建一個app實例
data = ["北京", "上海", "廣州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: int = 4):
return data[start: end]
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
默認規定了兩個參數,一個是start另一個是end,初始值是0和4,看下請求結果, Data 中的四個值都會返回回來。
增加參數看一下響應的結果,end=3,返回三個值。
需求1:要實現 start 必填,end 非必填
# -*- coding:utf-8 -*-
from fastapi import FastAPI # 導入FastAPI
import uvicorn # uvicorn:主要用於加載和提供應用程序的服務器
from typing import Optional
app = FastAPI() # 創建一個app實例
data = ["北京", "上海", "廣州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: Optional[int] = None):
if end: # 如果輸入end,則返回下一行 data[start: end];否則返回 data[start: -1]
return data[start: end]
return data[start: -1] # 默認返回到最后一個,-1 表示最后一個
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
看一下效果,不輸入 end
需求2:對輸入的參數進行長度限制,限制長度 2-8位。
from fastapi import FastAPI, Query
import uvicorn
app = FastAPI()
@app.get("/items/")
def read_items(name: str = Query(..., min_length=2,max_length=8)):
results = {"items": [{"id": "001"}, {"name": "tester"}]}
if name:
results.update({"name": name})
return results
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
- 當使用 Query 且需要聲明一個值是必需的時,可以將 ... 用作第一個參數值。
- min_length :最小長度
- max_length :最大長度
1. 看結果,輸入合法值。
- 輸入不合法的值,輸入 1 位。
- 輸入不合法的值,輸入 9 位。