diff --git a/src/api/fast_api.py b/src/api/fast_api.py index 0d56f34..550db05 100644 --- a/src/api/fast_api.py +++ b/src/api/fast_api.py @@ -1,9 +1,12 @@ -from fastapi import FastAPI, HTTPException, Request +from fastapi import FastAPI, HTTPException, Request, status from fastapi.responses import HTMLResponse +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse from pydantic import BaseModel from . import __version__ from utils.constants import DEFAULT_GREETING from utils.helper import normalize_name +import streamlit as st app = FastAPI( title="sample API", @@ -19,6 +22,44 @@ }, ) +def apply_common_styles(): + st.markdown(""" + + """, unsafe_allow_html=True) + + st.markdown('
Sample Python App
', unsafe_allow_html=True) + +@app.exception_handler(RequestValidationError) +async def validation_exception_handler(request: Request, exc: RequestValidationError): + return JSONResponse( + status_code=status.HTTP_422_UNPROCESSABLE_CONTENT, + content = { + "status": "error", + "message": "Invalid data provided", + "details": exc.errors(), + }, + ) +@app.exception_handler(Exception) +async def general_exception_handler(request: Request, exc: Exception): + return JSONResponse( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + content = { + "status": "error", + "message": "An internal server error occurred", + "details": str(exc), + }, + ) class GreetRequest(BaseModel): name: str @@ -98,4 +139,7 @@ def start(): if __name__ == "__main__": + apply_common_styles() + st.write("Welcome to the app!") start() +