diff --git a/examples/in_memory/main.py b/examples/in_memory/main.py index d79007d..4584f82 100644 --- a/examples/in_memory/main.py +++ b/examples/in_memory/main.py @@ -95,6 +95,17 @@ async def pydantic_instance() -> Item: return Item(name="Something", description="An instance of a Pydantic model", price=10.5) +put_ret = 0 + + +@app.put("/uncached_put") +@cache(namespace="test", expire=5) +async def uncached_put(): + global put_ret + put_ret = put_ret + 1 + return {"value": put_ret} + + @app.on_event("startup") async def startup(): FastAPICache.init(InMemoryBackend()) diff --git a/fastapi_cache/decorator.py b/fastapi_cache/decorator.py index 23ea496..79bf07e 100644 --- a/fastapi_cache/decorator.py +++ b/fastapi_cache/decorator.py @@ -152,7 +152,7 @@ def cache( return ret if request.method != "GET": - return await ensure_async_func(request, *args, **kwargs) + return await ensure_async_func(*args, **kwargs) if_none_match = request.headers.get("if-none-match") if ret is not None: diff --git a/tests/test_decorator.py b/tests/test_decorator.py index a037bed..33c4f9f 100644 --- a/tests/test_decorator.py +++ b/tests/test_decorator.py @@ -86,3 +86,11 @@ def test_pydantic_model() -> None: r1 = client.get("/pydantic_instance").json() r2 = client.get("/pydantic_instance").json() assert r1 == r2 + + +def test_non_get() -> None: + with TestClient(app) as client: + response = client.put("/uncached_put") + assert response.json() == {"value": 1} + response = client.put("/uncached_put") + assert response.json() == {"value": 2}