Skip to content

Commit 67124eb

Browse files
committed
[SAM-260011]: feat: update FastAPI routing and CLI command structure
1 parent 08ce905 commit 67124eb

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

src/sample/api/main.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
from fastapi import FastAPI
66
from fastapi.staticfiles import StaticFiles
77
from fastapi.templating import Jinja2Templates
8-
from sample import __version__
9-
from sample.api.routes import api_router
8+
9+
from sample.api.routes import greet_router
1010
from sample.api.web_page import web_router
1111
from sample.db.connection import connect_db
1212
from sample.utils.constants import PORT
1313

1414

1515
@asynccontextmanager
1616
async def lifespan(app: FastAPI):
17-
print("🏷️ Sample version:", __version__)
1817
logging.info("Starting FastAPI server...")
1918
try:
2019
db = connect_db()
@@ -29,7 +28,6 @@ async def lifespan(app: FastAPI):
2928

3029
app = FastAPI(
3130
title="Sample API",
32-
version=__version__,
3331
lifespan=lifespan,
3432
)
3533

@@ -43,7 +41,7 @@ async def lifespan(app: FastAPI):
4341

4442

4543
app.include_router(web_router)
46-
app.include_router(api_router)
44+
app.include_router(greet_router)
4745

4846

4947
def start():

src/sample/api/routes.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
from fastapi import APIRouter, HTTPException, Request
1+
from fastapi import APIRouter, FastAPI, HTTPException, Request
22
from pydantic import BaseModel
3-
from sample.utils.constants import API_PREFIX, GREETING
3+
from sample.utils.constants import API_PREFIX, GREETING, PORT
44
from sample.utils.helper import normalize_name
55
from starlette.responses import HTMLResponse, JSONResponse
6+
from sample import __version__
67

7-
api_router = APIRouter(prefix=API_PREFIX, tags=["V1"])
8+
app = FastAPI(
9+
title="Sample API",
10+
version=__version__,
11+
)
12+
13+
api_router = APIRouter()
14+
greet_router = APIRouter(prefix=API_PREFIX, tags=["V1"])
815

916

1017
class GreetRequest(BaseModel):
@@ -20,7 +27,7 @@ def health_check():
2027
return {"status": "ok"}
2128

2229

23-
@api_router.post("/greet", response_model=GreetResponse)
30+
@greet_router.post("/greet", response_model=GreetResponse)
2431
def greet_user(payload: GreetRequest):
2532
clean_name = normalize_name(payload.name)
2633

@@ -35,7 +42,7 @@ def version():
3542
return {"version": api_router.version}
3643

3744

38-
@api_router.get("/index", response_class=HTMLResponse, tags=["Home"])
45+
@api_router.get("/", response_class=HTMLResponse, tags=["Home"])
3946
async def read_root(request: Request):
4047
return """
4148
<html>
@@ -85,3 +92,13 @@ def get_help():
8592
"message": "Welcome to the Sample BoilerPlate API! Visit /docs for API documentation."
8693
},
8794
)
95+
96+
97+
app.include_router(api_router)
98+
app.include_router(greet_router)
99+
100+
101+
def start():
102+
import uvicorn
103+
104+
uvicorn.run("sample.api.routes:app", host="127.0.0.1", port=PORT, reload=True)

src/sample/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ def dev():
2424
@cli.command()
2525
def api():
2626
"""Run the Sample FastAPI backend."""
27-
from sample.api.main import start
27+
from sample.api.routes import start
2828

2929
start()

0 commit comments

Comments
 (0)