Browse Source

Add helper function get_query_param to safely fetch query parameters

pull/14106/head
jsibitoye 10 months ago
parent
commit
475c0de684
  1. 17
      fastapi/routing.py
  2. 24
      tests/test_get_query_param.py

17
fastapi/routing.py

@ -4444,3 +4444,20 @@ class APIRouter(routing.Router):
return func
return decorator
def get_query_param(request, name: str, default: str | None = None) -> str | None:
"""
Utility function to safely fetch a query parameter from a request.
Args:
request: The request object.
name (str): The name of the query parameter to retrieve.
default (str | None, optional): The value to return if the parameter is missing. Defaults to None.
Returns:
str | None: The query parameter value, or the default if not found.
"""
try:
return request.query_params.get(name, default)
except Exception:
return default

24
tests/test_get_query_param.py

@ -0,0 +1,24 @@
import pytest
from starlette.requests import Request
from fastapi.routing import get_query_param
from starlette.testclient import TestClient
from fastapi import FastAPI
app = FastAPI()
@app.get("/demo")
async def demo(request: Request):
value = get_query_param(request, "name", default="guest")
return {"name": value}
client = TestClient(app)
def test_existing_query_param():
response = client.get("/demo?name=josh")
assert response.json() == {"name": "josh"}
def test_missing_query_param_returns_default():
response = client.get("/demo")
assert response.json() == {"name": "guest"}
Loading…
Cancel
Save