5.请求体、混合参数、嵌套请求体(FastAPI)

请求体、混合参数、嵌套请求体

  • Request Body and Fields请求体和字段

    class CityInfo(BaseModel):
        city_name: str = Field(...,example='城市名称')  #example是注解的作用,值不会被验证
        country_name: Optional[str]=None
        population : int = Field(default=800,description='城市人口',ge=800)
    
        class Config:
            schema_extra={
                'example': {
                    'city_name': 'Shanghai',
                    'country_name': 'China',
                    'population': 36648000,
                }
            }
            
    @app01.post('/city/')
    async def city_info(city: CityInfo):
        # return {'name': city.city_name,
        #         'country_name': city.country_name,
        #         'population': city.population
        #         }
        return city.dict()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ba3OPPve-1636984592405)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614103505650.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBIXC56M-1636984592407)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614103631079.png)]

  • 混合参数

    """混合参数"""
    @app01.put('/city_alter/{city_name}')
    async def city_alter(
            city_name:str,
            city1:CityInfo,
            city2:CityInfo,
            all_population: int = Query(default=140000000,description='国家总人口')
    ):
        if city_name == 'Shanghai':
            return {
                    'city_name': 'Shanghai',
                    'country_name': 'China',
                    'population': 36648000,
                    'all_popuplation': all_population
                }
        return city1.dict(),city2.dict()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ZEW0g3Q-1636984592409)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614104003603.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhVDST2g-1636984592423)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614104029607.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TINJ651K-1636984592424)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614104114520-1636980838642.png)]

  • 嵌套请求体

    """嵌套请求体"""
    class CityInfo(BaseModel):
        city_name: str = Field(...,example='城市名称')  #example是注解的作用,值不会被验证
        country_name: Optional[str]=None
        population : int = Field(default=800,description='城市人口',ge=800)
    
        class Config:
            schema_extra={
                'example': {
                    'city_name': 'Shanghai',
                    'country_name': 'China',
                    'population': 36648000,
                }
            }
    
    class Data(BaseModel):
        city_list:List[CityInfo]=None  #这里就是定义数据格式嵌套的请求体
        total_population:int = Field(description='人口总数',default=1200000)
        date:date
    
    
    @app01.post('/data/')
    def get_data(data:Data):
        return data.dict()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYA5jN1B-1636984592427)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614110714523.png)]

    • 添加beijing 城市参数

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jj2BW2mO-1636984592428)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614111156075.png)]

    • 返回

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3CqhKgl-1636984592430)(5.%E8%AF%B7%E6%B1%82%E4%BD%93%E3%80%81%E6%B7%B7%E5%90%88%E5%8F%82%E6%95%B0%E3%80%81%E5%B5%8C%E5%A5%97%E8%AF%B7%E6%B1%82%E4%BD%93.assets/image-20210614111229135.png)]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆芽芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值