Browse Source

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

pull/14322/head
Chaitanya Sai Meka 7 months ago
committed by Yurii Motov
parent
commit
6eb348433f
  1. 19
      docs/en/docs/tutorial/query-params-str-validations.md
  2. 10
      docs_src/query_params_str_validations/tutorial006d_an_py310.py
  3. 9
      tests/test_tutorial/test_query_params_str_validations/test_tutorial006d_an_py310.py

19
docs/en/docs/tutorial/query-params-str-validations.md

@ -257,23 +257,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 }

10
docs_src/query_params_str_validations/tutorial006d_an_py310.py

@ -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}

9
tests/test_tutorial/test_query_params_str_validations/test_tutorial006d_an_py310.py

@ -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}
Loading…
Cancel
Save