From 664f58cefe96ef0c51b1ba725c1256c1bed8ed6d Mon Sep 17 00:00:00 2001 From: grabowski Date: Mon, 11 Aug 2025 16:50:57 +0700 Subject: [PATCH] Consolidate search endpoints for better API organization - Removed duplicate /api/search endpoint - Kept /search as the main JSON API endpoint with proper documentation - Added /search/form for web form submissions - Updated HTML form to use /search/form endpoint - Clear separation between API and web interface - Media type enums still visible in /docs for API usage - Maintains all functionality while reducing endpoint confusion --- main.py | 16 ++++++++-------- templates/index.html | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 77c3158..0db1351 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,10 @@ -from fastapi import FastAPI, Request, Form -from fastapi.responses import HTMLResponse +from fastapi import FastAPI, Request, Form, Body +from fastapi.responses import HTMLResponse, JSONResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates import httpx import asyncio -from typing import Optional, List +from typing import Optional, List, Union import json import os from dotenv import load_dotenv @@ -59,10 +59,10 @@ async def home(request: Request): """Serve the main search form""" return templates.TemplateResponse("index.html", {"request": request}) -@app.post("/api/search", response_model=List[MediaItem]) +@app.post("/search", response_model=List[MediaItem]) async def api_search_media(search_request: SearchRequest): """ - Search for media items via API + Search for media items via JSON API **Media Types:** - `book`: Search books using OpenLibrary API @@ -88,14 +88,14 @@ async def api_search_media(search_request: SearchRequest): return results -@app.post("/search") -async def search_media( +@app.post("/search/form") +async def form_search_media( request: Request, media_type: str = Form(...), query: str = Form(...), artist: Optional[str] = Form(None) ): - """Search for media based on type and query""" + """Search for media via web form submission - returns HTML page""" if not query.strip(): return templates.TemplateResponse("index.html", { diff --git a/templates/index.html b/templates/index.html index df4d7ce..8217948 100644 --- a/templates/index.html +++ b/templates/index.html @@ -16,7 +16,7 @@ {% endif %} -
+