'FastAPI: How to get raw URL path from request?
I have a GET method with request parameter in path:
@router.get('/users/{user_id}')
async def get_user_from_string(user_id: str):
return User(user_id)
Is it possible to get base url raw path ('/users/{user_id}') from request?
I have tried to use the following way:
path = [route for route in request.scope['router'].routes if
route.endpoint == request.scope['endpoint']][0].path
But it doesn't work and I get:
AttributeError: 'Mount' object has no attribute 'endpoint'
Solution 1:[1]
As per FastAPI documentation:
As FastAPI is actually Starlette underneath, with a layer of several tools on top, you can use Starlette's
Requestobject directly when you need to.
Thus, you can use Request object to get the URL path. For instance:
from fastapi import FastAPI, Request
app = FastAPI()
@app.get('/users/{user_id}')
async def get_user(user_id: str, request: Request):
print(request.url.path)
return "something"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Chris |
