Dan Walsh
Add root endpoint with API information and documentation links
c6df052
raw
history blame
2.24 kB
from fastapi import FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse, RedirectResponse
import os
# Import the router
from app.api.routes import router as api_router
app = FastAPI(
title="AI Content Summariser API",
description="An API for summarizing text content and web pages using NLP models",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc",
)
# Configure CORS
app.add_middleware(
CORSMiddleware,
allow_origins=[
"https://ai-content-summariser.vercel.app",
"http://localhost:3000",
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include the router
app.include_router(api_router)
@app.get("/", include_in_schema=True)
async def root():
"""
Root endpoint that provides information about the API and available endpoints.
"""
return {
"name": "AI Content Summariser API",
"version": "1.0.0",
"description": "API for summarizing text content and web pages using NLP models",
"endpoints": {
"documentation": "/docs",
"alternative_docs": "/redoc",
"health_check": "/health",
"api_endpoints": {
"summarise_text": "/api/summarise",
"summarise_url": "/api/summarise-url",
"status": "/api/status"
}
},
"github_repository": "https://github.com/dang-w/ai-content-summariser-api",
"frontend_application": "https://ai-content-summariser.vercel.app"
}
@app.get("/docs-redirect")
async def docs_redirect():
"""
Redirects to the API documentation.
"""
return RedirectResponse(url="/docs")
@app.get("/health")
async def health_check():
return {"status": "healthy"}
# Global exception handler for better error responses
@app.exception_handler(Exception)
async def global_exception_handler(request: Request, exc: Exception):
return JSONResponse(
status_code=500,
content={"detail": f"An unexpected error occurred: {str(exc)}"}
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=int(os.environ.get("PORT", 8000)))