Neoteroi / BlackSheep

Fast ASGI web framework for Python
https://www.neoteroi.dev/blacksheep/
MIT License
1.8k stars 75 forks source link

Together use FromJSON and Request, it does not work at v2.0.4 #466

Closed ruancan closed 5 months ago

ruancan commented 5 months ago

Unhandled exception - "POST /" Traceback (most recent call last): File "blacksheep\baseapp.pyx", line 81, in blacksheep.baseapp.BaseApplication.handle TypeError: hello() missing 1 required positional argument: 'p'

There is a main.py, it works very well at v2.0.3. But now, it does not work, at v2.0.4.


import uvicorn
from blacksheep import Request, Application, Router, FromJSON
from pydantic.dataclasses import dataclass
from pydantic import Field

@dataclass
class Person:
    id: int | None = None
    name: str = Field()

router = Router()

@router.post("/")
async def hello(request: Request, p: Person):
    return f"{request.client_ip}:Hello, {p.name}!"

app = Application(router=Router(sub_routers=[router]))

if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=5556)
RobertoPrevato commented 5 months ago

Hi @ruancan Thank You for reporting this issue. I just found the reason, it happens when using sub routers.

RobertoPrevato commented 5 months ago

Hi @ruancan Please upgrade to 2.0.5, I made a release to fix this regression with sub-routers.

ruancan commented 5 months ago

@RobertoPrevato Awesome, thank you very much.