lqs
d20566fe07
Some checks failed
Test / lint (push) Has been cancelled
Test / test (pydantic-v1, 3.10) (push) Has been cancelled
Test / test (pydantic-v1, 3.11) (push) Has been cancelled
Test / test (pydantic-v1, 3.12) (push) Has been cancelled
Test / test (pydantic-v1, 3.8) (push) Has been cancelled
Test / test (pydantic-v1, 3.9) (push) Has been cancelled
Test / test (pydantic-v2, 3.10) (push) Has been cancelled
Test / test (pydantic-v2, 3.11) (push) Has been cancelled
Test / test (pydantic-v2, 3.12) (push) Has been cancelled
Test / test (pydantic-v2, 3.8) (push) Has been cancelled
Test / test (pydantic-v2, 3.9) (push) Has been cancelled
Test / coverage-combine (push) Has been cancelled
Test / check (push) Has been cancelled
Issue Manager / issue-manager (push) Has been cancelled
Label Approved / label-approved (push) Has been cancelled
29 lines
694 B
Python
29 lines
694 B
Python
from fastapi import Depends, FastAPI, HTTPException
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
class InternalError(Exception):
|
|
pass
|
|
|
|
|
|
def get_username():
|
|
try:
|
|
yield "Rick"
|
|
except InternalError:
|
|
print("We don't swallow the internal error here, we raise again 😎")
|
|
raise
|
|
|
|
|
|
@app.get("/items/{item_id}")
|
|
def get_item(item_id: str, username: str = Depends(get_username)):
|
|
if item_id == "portal-gun":
|
|
raise InternalError(
|
|
f"The portal gun is too dangerous to be owned by {username}"
|
|
)
|
|
if item_id != "plumbus":
|
|
raise HTTPException(
|
|
status_code=404, detail="Item not found, there's only a plumbus here"
|
|
)
|
|
return item_id
|