FastAPI之 路径参数与校验,bool值

FastAPI之路径参数以及验证

from fastapi import APIRouter,Path


app03 = APIRouter()


@app03.get('/path/{num}')
async def path_parameter_validation(
    num: int = Path(..., ge =100, le = 10, title = 'ID' )
):
   return num

FastAPI值  查询参数

from fastapi import APIRouter, Query
from typing import Optional

app03 = APIRouter()


@app03.get('/query')
async def query_parameter_transmit(

           page: int = 1,
           page_num: Optional[int] = None
)
       return page,page_num

FastAPI之   bool值传递

from fastapi import APIRouter


app03 = APIRouter()


@app03.get('/bool/convertion'):
async def type_convertion(parameter: bool = False)
      return parameter


# 注意
# False,false,off,0,no 都是false
# True,on,1,yes 都是True

 FastAPI之  查询参数验证

from fastapi import APIRouter


app03 = APIRouter()


@app03.get('/query/validation')
async def query_parameter_validation(

        value: str = Query(..., maxlength=100, min_length=10),
        values: List[str] = Query(default=['k1','k2'],alias='牛逼哦')
)

 FastAPI之混合查询  request_body(post请求),路径参数,以及查询参数

# 首先先写request_body 即post请求   request Body和
from pydantic import BaseModel
# 请求体和注解
class CityInfo(BaseModel):
       name: str = Field(...,example='beijing') example只是添加注解,不参与验证
       country: str
       country_code: str = None
       country_population: int = Field(default=800,description='人口数量',ge=10,le=20)
       class config:
           schema_extra = {
                   'example':{
                     name:'BeiJING',
                    ' country':'中国',
                   ' country_code':'ZG',
                   'country_population':1000,               
}
                    
}
# request_body请求体 + path路径参数 + query 查询参数三合一来传递
@app03.put('/request_body/city/{name}')
async def mix_city_mix(
name: str,
city01: CityInfo,
city02: CityInfo,
confirmed: int = Query(default=None, description='确诊数', ge=0),
death: int = Query(default=None, description='死亡数', ge=0)
):
if name == 'ShangHai':
return {'ShangHai': {'confirmed': 27,'death': 5}}
return city01.dict(), city02.json()
 

 fsatapi 之 数据格式嵌套的请求体

from fastapi import APIRouter
from pydantic import BaseModel,Field


app03 = APIRouter()


class CityInfo(BaseModel):
     name: str = Field(...,example = 'BeiJing') #example的值只是举例,不做校验
     country: str
     country_code: str = None
     country_population: int = Field(default=800, le=800, title='人口数量', description='人口数量描述')
     class config:
           schema_extra = {
                example: {
               'name': 'ShangHai',
               'country': '中国',
               'country_code': 'CN',
               'country_population':8000

}

}

#基于pydantic定义好请求体的数据结构,校验使用field

class Data(BaseModel):
     city: List[CityInfo] = None
     date: date  # 除了date 还有uuid,ipv4,ipv6,frozenset,bytes等数据类型
    confirmed: int = Field(default=0, description='确诊数', ge=0)
    deaths: int = Field(default=0, description='死亡数', ge=0)
    recovered: int = Field(default=0, description='痊愈数', ge=0)


@app03.put('/request_body/nested')
def nested_data(data: Data):
    return data

 

posted @ 2021-05-27 14:24  苦行僧冬*婷  阅读(489)  评论(0)    收藏  举报