Spaces:
Running
Running
| # pages/5_API_Playground.py | |
| import streamlit as st | |
| import streamlit.components.v1 as components | |
| from .ui_utils import TENSORUS_API_URL, get_api_status # MODIFIED | |
| st.set_page_config(page_title="API Playground", layout="wide") | |
| st.title("🚀 API Playground & Documentation Hub") | |
| st.caption("Explore and interact with the Tensorus REST API.") | |
| # Check if API is running | |
| api_running = get_api_status() | |
| if not api_running: | |
| st.error( | |
| f"The Tensorus API backend does not seem to be running at {TENSORUS_API_URL}. " | |
| "Please start the backend (`uvicorn api:app --reload`) to use the API Playground." | |
| ) | |
| st.stop() # Stop execution if API is not available | |
| else: | |
| st.success(f"Connected to API backend at {TENSORUS_API_URL}") | |
| st.markdown( | |
| f""" | |
| This section provides live, interactive documentation for the Tensorus API, | |
| powered by FastAPI's OpenAPI integration. You can explore endpoints, | |
| view schemas, and even try out API calls directly in your browser. | |
| * **Swagger UI:** A graphical interface for exploring and testing API endpoints. | |
| * **ReDoc:** Alternative documentation format, often preferred for reading. | |
| Select a view below: | |
| """ | |
| ) | |
| # Use tabs to embed Swagger and ReDoc | |
| tab1, tab2 = st.tabs(["Swagger UI", "ReDoc"]) | |
| # Construct the documentation URLs based on the API base URL | |
| swagger_url = f"{TENSORUS_API_URL}/docs" | |
| redoc_url = f"{TENSORUS_API_URL}/redoc" | |
| with tab1: | |
| st.subheader("Swagger UI") | |
| st.markdown(f"Explore the API interactively. [Open in new tab]({swagger_url})") | |
| # Embed Swagger UI using an iframe | |
| components.iframe(swagger_url, height=800, scrolling=True) | |
| with tab2: | |
| st.subheader("ReDoc") | |
| st.markdown(f"View the API documentation. [Open in new tab]({redoc_url})") | |
| # Embed ReDoc using an iframe | |
| components.iframe(redoc_url, height=800, scrolling=True) | |
| st.divider() | |
| st.caption("Note: Ensure the Tensorus API backend is running to interact with the playground.") | |