name: str
token: str
fake_db = [
User(name='foo', token='a1'),
User(name='bar', token='a2')
]
async def get_user_by_token(token: str = Header()):
for user in fake_db:
if user.token == token:
return user
else:
raise HTTPException(status_code=401, detail='Invalid token')
@router.get(path='/test_a', summary='Test route A')
async def test_route_a(user: User = Depends(get_user_by_token)):
return {'name': user.name}
@router.get(path='/test_b', summary='Test route B')
async def test_route_a(user: User = Depends(get_user_by_token)):
return {'name': user.name}
Ich möchte Codeduplizierung vermeiden. Ist es möglich, die Zeile user: User = Depends(get_user_by_token) irgendwie für den gesamten Router festzulegen? Gleichzeitig muss das Benutzerobjekt in jeder Methode verfügbar sein.
Es ist sehr wichtig, dass die OpenAPI sagt, dass Sie einen Header mit einem Token angeben müssen für die Methode.
