← Back to all products

REST API Starter

$10

Production-ready REST API server built on Python's standard library, zero dependencies.

📁 9 files
JSONMarkdownPython

📄 Product Preview

Try the interactive reader and demo tools below, or get the full product with all content unlocked.

📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample

📁 File Structure 9 files

rest-api-starter/ ├── LICENSE ├── README.md ├── examples/ │ └── config.example.json ├── free-sample.zip ├── guide/ │ ├── 01_rest-api-starter.md │ ├── 02_features.md │ └── 03_quick-start.md ├── index.html └── src/ └── main.py

📖 Documentation Preview README excerpt

REST API Starter

Production-ready REST API server built on Python's standard library. Zero dependencies.

Part of the API Launchpad toolkit by [CodeVault](https://codevault.dev).

Features

  • Declarative routing with path parameters (/users/{id}) and type coercion
  • Middleware pipeline: logging, CORS, timing — add your own in one line
  • RFC 7807 error responses — structured JSON errors that clients can parse
  • Auto-generated OpenAPI 3.0 spec from your route definitions
  • Request validation with JSON body parsing and type checking
  • Zero dependencies — runs on Python stdlib only

Quick Start


# Start the server
python3 src/main.py

# Test it
curl http://localhost:8000/items
curl http://localhost:8000/items/1
curl -X POST http://localhost:8000/items -d '{"name":"New Item","price":5.99}'
curl http://localhost:8000/openapi.json

Adding Your Own Routes


from main import router, Response, Request

@router.get("/users/{user_id}", summary="Get user", tags=["users"])
def get_user(request: Request) -> Response:
    user_id = request.path_params["user_id"]
    return Response(body={"id": user_id, "name": "Acme User"})

@router.post("/users", summary="Create user", tags=["users"])
def create_user(request: Request) -> Response:
    data = request.json()
    return Response(status=201, body={"id": "4", **data})

Adding Middleware


def auth_middleware(request, next_handler):
    api_key = request.headers.get("x-api-key")
    if not api_key:
        raise APIError(401, "Unauthorized", "Missing X-API-Key header")
    return next_handler(request)

Configuration

See examples/config.example.json for all available options.

OptionDefaultDescription

... continues with setup instructions, usage examples, and more.

📄 Code Sample .py preview

src/main.py #!/usr/bin/env python3 """ REST API Starter — Production-Ready REST API Server ===================================================== A complete HTTP REST API server built entirely on Python's standard library. Features declarative routing, middleware pipeline, structured error handling, CORS support, and auto-generated OpenAPI 3.0 documentation. Zero dependencies. Just run: python3 main.py Part of the API Launchpad toolkit by DataNest. License: MIT """ from __future__ import annotations import json import logging import re import time import traceback from dataclasses import dataclass, field from datetime import datetime, timezone from http.server import HTTPServer, BaseHTTPRequestHandler from typing import Any, Callable from urllib.parse import parse_qs, urlparse # --------------------------------------------------------------------------- # Configuration # --------------------------------------------------------------------------- DEFAULT_HOST = "0.0.0.0" DEFAULT_PORT = 8000 API_VERSION = "1.0.0" API_TITLE = "REST API Starter" # Configure logging — structured JSON output for production observability logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%dT%H:%M:%S", ) logger = logging.getLogger("rest-api") # --------------------------------------------------------------------------- # Data Models # --------------------------------------------------------------------------- # ... 537 more lines ...
Buy Now — $10 Back to Products