锵锵枪 wrote:
使用FastAPI搭建网站(二):参数及Url路劲管理 很喜欢webpy的Url路劲管理的方式,整个系统结构一目了然。不过,FastAPI强大的数据校验算是弥补了这方面不足,借助python的类型提示,所有数据的类型转换、校验FastAPI都会自动帮你处理好,自己只需要安安心心实现功能就行了。 ###路劲参数 下面的例子,参数 id 的值会自动传递到 item 函数上。如果参数非 int 类型,FastAPI会自动抛出422的错误提示。 ``` @app.get("/items/{id}") async def item(id:int): return id ``` ###查询参数 FastAPI非常聪明,会根据字段名,如果不是路劲参数,会自动的识别为查询参数。如果参数具有默认值,那么对应的参数是可选的。不存在的时候自动使用默认值替代。 ``` @app.get("/items/{id}") async def item(id: int, limit: int = 10): return {'id':id,'limit':limit} ``` 对应的链接类似: https://127.0.0.1/items/3?limit=2 或者 https://127.0.0.1/items/3 因为limit有默认值10,是可选的。 ###表单参数 使用表单需要按照 python-multipart 包 >pip install python-multipart >from fastapi import Form 并且显式的什么,对应的参数是表单参数。使用 Form(...)表示该参数是必须的 ,或者Form(18) 默认值18,标识该参数为可选的。 ``` @app.post("/login/") async def login(username: str = Form(...), age: int = Form(18)): return username ``` 更对表单的高级用法可以参考 表单和文件上传:[Forms and Files](https://fastapi.tiangolo.com/tutorial/request-forms-and-files/) ##URL路劲管理 实际应用中不可能把所有的功能写在单个页面,FastAPI提供了 APIRouter 来更加灵活的创建应用。 在子功能页面 ``` from fastapi import APIRouter router = APIRouter() @router.get("/") async def read_items(): return 'subpagec' ``` 在主文件进行路由注入 ``` from fastapi import FastAPI import SubPage app = FastAPI() app.include_router(users.router,prefix="/sub") ``` Ok,Perfect it?
锵锵枪 2020-08-22 00:49:22  2 回复