使用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?