docs: fix inline code formatting and add tested example for Required, can be None section

This commit is contained in:
Chaitanya Sai Meka 2025-11-10 14:55:38 +05:30
parent c841c42929
commit b1c309a666
3 changed files with 23 additions and 15 deletions

View File

@ -271,23 +271,12 @@ For example, you might try:
q: Annotated[str | None, Query(min_length=3)] = ...
```
But this will still expect a string value, and if the client omits q or tries to send q=None, FastAPI will raise a validation error.
In other words, None is not an acceptable runtime value for query parameters — only strings are.
But this will still expect a **string** value, and if the client omits `q` or tries to send `q=None`, FastAPI will raise a validation error.
In other words, `None` is not an acceptable runtime value for query parameters — only strings are.
If you want to accept special values (like "None" or an empty string) and interpret them as None in your application, you can handle them manually in your function:
If you want to accept special values (like `"None"` or an empty string) and interpret them as `None` in your application, you can handle them manually in your function:
```Python
from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()
@app.get("/items/")
async def read_items(q: Annotated[str | None, Query()] = ...):
if q in ("None", "", "null"):
q = None
return {"q": q}
```
{* ../../docs_src/query_params_str_validations/tutorial006d_an_py310.py hl[9] *}
## Query parameter list / multiple values { #query-parameter-list-multiple-values }

View File

@ -0,0 +1,10 @@
from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()
@app.get("/items/")
async def read_items(q: Annotated[str | None, Query()] = ...):
if q in ("None", "", "null"):
q = None
return {"q": q}

View File

@ -0,0 +1,9 @@
from fastapi.testclient import TestClient
from docs_src.query_params_str_validations.tutorial006d_an_py310 import app
client = TestClient(app)
def test_read_items():
response = client.get("/items/", params={"q": "None"})
assert response.status_code == 200
assert response.json() == {"q": None}