FastApi的post请求和get请求规范完整示例

POST请求
  • 模型类
from typing import List, Optional, Union, Dict
from pydantic import BaseModel, Field

#  请求数据输入格式
class ItemIndurstry(BaseModel):
    year_: str = Field(title='年份,2014年至2021年')

#  返回数据输出格式
class ItemIndurstryOut(BaseModel):
    code: int = Field(default=1, title='1代表请求数据成功,0代表数据请求失败')
    # DICT 字典类型它中括号第一个参数是key,第二个是value  List是列表   Union是取并集
    data: Dict[str, Union[str, List[Dict[str, Union[int, str]]]]] = Field(default={
        "year": "2021",
        "info": "2021年各行业侵权热度状况",
        "content": [

            {
                "value": 0,
                "name": "",
                "percent": ""
            }
        ],
        "top_one": "",
        "top_three": ""
    })  

# 返回请求不到数据格式
class ItemIdurstryNodata(BaseModel):
    code: int = Field(default=0, title='数据请求失败')
    data: Union[str, None] = Field(default=None)
  • 路由逻辑

    # 添加response_model定义输出的数据格式,包括正确的输出格式和请求不成功的数据格式
    @sentiment_router.post('/indurstry/hot/',response_model=Union[ItemIndurstryOut,ItemIdurstryNodata])
    async def indurstry_hot(item: ItemIndurstry=Body(...,example={'year_':"2021"})):
        '''
        反馈每年侵权行业热度前十占比,侵权最严重的行业前3名
        ---
        - 输入: 年份,支持2014年至2021年
    	- 输出: 年份对应的行业侵权占比,排行等
        '''
        return content
    
    
  • 在docs交互文档下查看
    在这里插入图片描述在这里插入图片描述

GET请求
  • 模型类

    from typing import List, Optional, Union, Dict
    from pydantic import BaseModel, Field
    # 请求数据输出格式
    class CompanyInfoOut(BaseModel):
        result: Dict[str, Union[int, str, None, Dict[str, Union[int, str, None]]]] = Field(default={
            "id": 0,
            "base": "",
            "name": "",
            "legalPersonID": 0,
            "legalPersonName": "",
            "legalPersonType": 0,
            "regNumber": 0,
            "companyOrgType": "",
            "category": {
                "categoryCode": "",
                "cate3": "",
                "cate2": "",
                "cate1": ""
            },
            "region": {
                "regionCode": "",
                "province": "",
                "city": "",
                "area": ""
            },
            "regLocation": "",
            "estiblishTime": "",
            "fromTime": "",
            "toTime": "",
            "businessScope": "",
            "regInstitute": "",
            "approvedTime": "",
            "regStatus": "",
            "regCapital": "",
            "actualCapital": "",
            "orgNumber": 0,
            "orgApprovedInstitute": "",
            "parentID": 0,
            "listCode": "",
            "property1": "",
            "property2": "",
            "property3": "",
            "property4": ""
        })
        retCode: str = Field(default='000000', title='000000,数据请求成功')
        retMsg: str = Field(default='success')
    
    # 请求数据错误格式
    class CompanyError(BaseModel):
        retCode: str = Field(default="000001", title="请求数据失败")
        retMsg: str = Field(default="查询成功无结果")
    
  • 路由逻辑

    @router.get('/info/',response_model=Union[CompanyInfoOut,CompanyError])
    async def companyinfo(name: str= Query(default='杭州阿里巴巴广告有限公司', title='企业名')):
        '''
        根据企业具体名称查询企业基本信息
        ---
        - 输入: 企业名称
        - 输出: 企业的基本信息,包括法人、注册地址、注册资金等信息
        '''
        return data
    
  • 在docs交互文档下查看

    在这里插入图片描述在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐