SpacesExamples/fastapi-react-app
9
1from fastapi import FastAPI2from fastapi.middleware.cors import CORSMiddleware3from fastapi.responses import JSONResponse4from fastapi.staticfiles import StaticFiles5import numpy as np6import argparse7import os8 9HOST = os.environ.get("API_URL", "0.0.0.0")10PORT = os.environ.get("PORT", 7860)11parser = argparse.ArgumentParser()12parser.add_argument("--host", default=HOST)13parser.add_argument("--port", type=int, default=PORT)14parser.add_argument("--reload", action="store_true", default=True)15parser.add_argument("--ssl_certfile")16parser.add_argument("--ssl_keyfile")17args = parser.parse_args()18 19app = FastAPI()20app.add_middleware(21 CORSMiddleware,22 allow_origins=["*"],23 allow_credentials=True,24 allow_methods=["*"],25 allow_headers=["*"],26)27 28 29@app.get("/invert")30async def invert(text: str):31 return {32 "original": text,33 "inverted": text[::-1],34 }35 36 37@app.get("/data")38async def get_data():39 data = {"data": np.random.rand(100).tolist()}40 return JSONResponse(data)41 42 43app.mount("/", StaticFiles(directory="static", html=True), name="static")44 45if __name__ == "__main__":46 import uvicorn47 48 print(args)49 uvicorn.run(50 "app:app",51 host=args.host,52 port=args.port,53 reload=args.reload,54 ssl_certfile=args.ssl_certfile,55 ssl_keyfile=args.ssl_keyfile,56 )57 