MIF_E31220954/backend/index.py

52 lines
1.7 KiB
Python

from fastapi import FastAPI
from fastapi.openapi.models import OAuthFlows as OAuthFlowsModel, SecurityScheme
from fastapi.openapi.utils import get_openapi
from fastapi.security import OAuth2PasswordBearer
from routes.index import api_router
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
@app.get("/")
def root():
return {"message": "FastAPI is running on Vercel!"}
# Konfigurasi Swagger agar hanya meminta token (tanpa login ulang)
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title="API Prediction",
version="1.0.0",
description="API for Tomato Price Prediction",
routes=app.routes,
)
openapi_schema["components"]["securitySchemes"] = {
"BearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
}
}
for path in openapi_schema["paths"].values():
for method in path.values():
method["security"] = [{"BearerAuth": []}]
app.openapi_schema = openapi_schema
return app.openapi_schema
app.openapi = custom_openapi # Pakai custom OpenAPI
app.include_router(api_router)
# Middleware untuk CORS (Opsional, jika API digunakan oleh frontend)
app.add_middleware(
CORSMiddleware,
# allow_origins=["http://localhost:5173"], # Ganti dengan domain frontend jika perlu
# allow_origins=["https://svr-tomato-price-prediction-frontend.vercel.app"], # Ganti dengan domain frontend jika perlu
allow_origins=["https://predictiontomat.onrender.com"], # Ganti dengan domain frontend jika perlu
allow_credentials=False,
allow_methods=["*"],
allow_headers=["*"],
)