mirror of https://github.com/tiangolo/fastapi.git
📝 Update release notes
This commit is contained in:
parent
7eadeb69bd
commit
b36047b54a
|
|
@ -7,6 +7,126 @@ hide:
|
||||||
|
|
||||||
## Latest Changes
|
## Latest Changes
|
||||||
|
|
||||||
|
### Highlights
|
||||||
|
|
||||||
|
Now you can declare `Query`, `Header`, and `Cookie` parameters with Pydantic models. 🎉
|
||||||
|
|
||||||
|
#### `Query` Parameter Models
|
||||||
|
|
||||||
|
Use Pydantic models for `Query` parameters:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from typing import Annotated, Literal
|
||||||
|
|
||||||
|
from fastapi import FastAPI, Query
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
class FilterParams(BaseModel):
|
||||||
|
limit: int = Field(100, gt=0, le=100)
|
||||||
|
offset: int = Field(0, ge=0)
|
||||||
|
order_by: Literal["created_at", "updated_at"] = "created_at"
|
||||||
|
tags: list[str] = []
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/")
|
||||||
|
async def read_items(filter_query: Annotated[FilterParams, Query()]):
|
||||||
|
return filter_query
|
||||||
|
```
|
||||||
|
|
||||||
|
Read the new docs: [Query Parameter Models](https://fastapi.tiangolo.com/tutorial/query-param-models/).
|
||||||
|
|
||||||
|
#### `Header` Parameter Models
|
||||||
|
|
||||||
|
Use Pydantic models for `Header` parameters:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from fastapi import FastAPI, Header
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
class CommonHeaders(BaseModel):
|
||||||
|
host: str
|
||||||
|
save_data: bool
|
||||||
|
if_modified_since: str | None = None
|
||||||
|
traceparent: str | None = None
|
||||||
|
x_tag: list[str] = []
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/")
|
||||||
|
async def read_items(headers: Annotated[CommonHeaders, Header()]):
|
||||||
|
return headers
|
||||||
|
```
|
||||||
|
|
||||||
|
Read the new docs: [Header Parameter Models](https://fastapi.tiangolo.com/tutorial/header-param-models/).
|
||||||
|
|
||||||
|
#### `Cookie` Parameter Models
|
||||||
|
|
||||||
|
Use Pydantic models for `Cookie` parameters:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from fastapi import Cookie, FastAPI
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
class Cookies(BaseModel):
|
||||||
|
session_id: str
|
||||||
|
fatebook_tracker: str | None = None
|
||||||
|
googall_tracker: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/")
|
||||||
|
async def read_items(cookies: Annotated[Cookies, Cookie()]):
|
||||||
|
return cookies
|
||||||
|
```
|
||||||
|
|
||||||
|
Read the new docs: [Cookie Parameter Models](https://fastapi.tiangolo.com/tutorial/cookie-param-models/).
|
||||||
|
|
||||||
|
#### Forbid Extra Query (Cookie, Header) Parameters
|
||||||
|
|
||||||
|
Use Pydantic models to restrict extra values for `Query` parameters (also applies to `Header` and `Cookie` parameters).
|
||||||
|
|
||||||
|
To achieve it, use Pydantic's `model_config = {"extra": "forbid"}`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from typing import Annotated, Literal
|
||||||
|
|
||||||
|
from fastapi import FastAPI, Query
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
class FilterParams(BaseModel):
|
||||||
|
model_config = {"extra": "forbid"}
|
||||||
|
|
||||||
|
limit: int = Field(100, gt=0, le=100)
|
||||||
|
offset: int = Field(0, ge=0)
|
||||||
|
order_by: Literal["created_at", "updated_at"] = "created_at"
|
||||||
|
tags: list[str] = []
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/")
|
||||||
|
async def read_items(filter_query: Annotated[FilterParams, Query()]):
|
||||||
|
return filter_query
|
||||||
|
```
|
||||||
|
|
||||||
|
This applies to `Query`, `Header`, and `Cookie` parameters, read the new docs:
|
||||||
|
|
||||||
|
* [Forbid Extra Query Parameters](https://fastapi.tiangolo.com/tutorial/query-param-models/#forbid-extra-query-parameters)
|
||||||
|
* [Forbid Extra Headers](https://fastapi.tiangolo.com/tutorial/header-param-models/#forbid-extra-headers)
|
||||||
|
* [Forbid Extra Cookies](https://fastapi.tiangolo.com/tutorial/cookie-param-models/#forbid-extra-cookies)
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* ✨ Add support for Pydantic models for parameters using `Query`, `Cookie`, `Header`. PR [#12199](https://github.com/fastapi/fastapi/pull/12199) by [@tiangolo](https://github.com/tiangolo).
|
* ✨ Add support for Pydantic models for parameters using `Query`, `Cookie`, `Header`. PR [#12199](https://github.com/fastapi/fastapi/pull/12199) by [@tiangolo](https://github.com/tiangolo).
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue