Closed MohammadmahdiAhmadi closed 3 years ago
Hi !
JSONResponse(
status_code=<<status code>>,
content= <<response msg>>,
)
Example:
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
class UnicornException(Exception):
def __init__(self, name: str):
self.name = name
app = FastAPI()
@app.exception_handler(UnicornException)
async def unicorn_exception_handler(request: Request, exc: UnicornException):
return JSONResponse(
status_code=418,
content={"message": f"Oops! {exc.name} did something. There goes a rainbow..."},
)
@app.get("/unicorns/{name}")
async def read_unicorn(name: str):
if name == "yolo":
raise UnicornException(name=name)
return {"unicorn_name": name}
https://fastapi.tiangolo.com/tutorial/handling-errors/#install-custom-exception-handlers
Thanks :)
I did something like this This is madness but ...
` @app.exception_handler(AuthJWTException) def authjwt_exception_handler(request: Request, exc: AuthJWTException):
if exc.message == "Token has been revoked":
exc.message = "My own error message 1"
elif exc.message == "Signature has expired":
exc.message = "My own error message 2"
elif exc.message == "Missing Authorization Header":
exc.message = "My own error message 3"
elif exc.message == "Only access tokens are allowed":
exc.message = "My own error message 4"
elif exc.message == "Only refresh tokens are allowed":
exc.message = "My own error message 5"
else:
exc.message = "My own error message 6"
return JSONResponse(
status_code=exc.status_code,
content={
"status": False,
"message": exc.message
}
)`
I want to offer you a better option:
# Your own messages. You can save all messages in here
messages = {
"Token has been revoked": "My own error message 1",
"Signature has expired": "My own error message 2",
"Missing Authorization Header": "My own error message 3",
"Only access tokens are allowed": "My own error message 4",
"Only refresh tokens are allowed": "My own error message 5"
}
# this code compares exc.message with your messages.
@app.exception_handler(AuthJWTException)
def auth_jwt_exception_handler(request: Request, exc: AuthJWTException):
return JSONResponse(
status_code=exc.status_code,
content={
"status": False,
"message": messages[exc.message]
}
)
I want to offer you a better option:
# Your own messages. You can save all messages in here messages = { "Token has been revoked": "My own error message 1", "Signature has expired": "My own error message 2", "Missing Authorization Header": "My own error message 3", "Only access tokens are allowed": "My own error message 4", "Only refresh tokens are allowed": "My own error message 5" } # this code compares exc.message with your messages. @app.exception_handler(AuthJWTException) def auth_jwt_exception_handler(request: Request, exc: AuthJWTException): return JSONResponse( status_code=exc.status_code, content={ "status": False, "message": messages[exc.message] } )
I want to offer you a better option:
# Your own messages. You can save all messages in here messages = { "Token has been revoked": "My own error message 1", "Signature has expired": "My own error message 2", "Missing Authorization Header": "My own error message 3", "Only access tokens are allowed": "My own error message 4", "Only refresh tokens are allowed": "My own error message 5" } # this code compares exc.message with your messages. @app.exception_handler(AuthJWTException) def auth_jwt_exception_handler(request: Request, exc: AuthJWTException): return JSONResponse( status_code=exc.status_code, content={ "status": False, "message": messages[exc.message] } )
That's amazing ! Thank you so much :)))
Hi, how can i personalize exeption messages?
@app.exception_handler(AuthJWTException) def authjwt_exception_handler(request: Request, exc: AuthJWTException): return JSONResponse( status_code=exc.status_code, content={"detail": exc.message} )