api-testing / README.md
Nipun's picture
Initial commit: FastAPI teaching tool
a4a1f1b
metadata
title: API Teaching Tool
emoji: 🔌
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
license: mit

API Teaching Tool

A simple educational API for learning HTTP methods, request/response formats, and REST API concepts.

Quick Start

Once deployed, visit /docs for interactive Swagger documentation.

Endpoints Overview

GET Examples

Endpoint Description
/hello Simplest GET - returns greeting
/time Returns current server time
/greet?name=X Query parameter example
/greet/{name} Path parameter example
/search?q=X&limit=10 Multiple query parameters
/items List all items
/items/{id} Get single item

POST Examples

Endpoint Description
/items Create new item (JSON body)
/users Create user (JSON body)
/echo Echo back any JSON you send
/echo/text Echo back raw text

PUT/PATCH/DELETE

Endpoint Method Description
/items/{id} PUT Replace entire item
/items/{id} PATCH Partial update
/items/{id} DELETE Delete item

Response Formats

Endpoint Format
/format/json JSON (default)
/format/text Plain text
/format/html HTML page
/format/xml XML document

Educational

Endpoint Description
/headers Shows all request headers
/headers/custom Returns custom headers
/status/{code} Returns specified HTTP status
/method Accepts any method, shows what was used
/ip Shows client IP address
/params/types Demonstrates parameter types

Example Usage

Using curl

# Simple GET
curl https://nipun-api-testing.hf.space/hello

# GET with query parameter
curl "https://nipun-api-testing.hf.space/greet?name=Alice"

# POST with JSON body
curl -X POST https://nipun-api-testing.hf.space/items \
  -H "Content-Type: application/json" \
  -d '{"name": "Book", "price": 15.99, "quantity": 10}'

# PUT to update
curl -X PUT https://nipun-api-testing.hf.space/items/1 \
  -H "Content-Type: application/json" \
  -d '{"name": "Updated Apple", "price": 2.00, "quantity": 50}'

# DELETE
curl -X DELETE https://nipun-api-testing.hf.space/items/1

# Get different formats
curl https://nipun-api-testing.hf.space/format/xml
curl https://nipun-api-testing.hf.space/format/html

# Test status codes
curl -i https://nipun-api-testing.hf.space/status/404
curl -i https://nipun-api-testing.hf.space/status/201

Using Python requests

import requests

BASE = "https://nipun-api-testing.hf.space"

# GET request
response = requests.get(f"{BASE}/hello")
print(response.json())

# GET with parameters
response = requests.get(f"{BASE}/greet", params={"name": "Alice"})
print(response.json())

# POST with JSON
data = {"name": "Laptop", "price": 999.99, "quantity": 5}
response = requests.post(f"{BASE}/items", json=data)
print(response.status_code)  # 201
print(response.json())

# Check headers
response = requests.get(f"{BASE}/headers")
print(response.json())

Local Development

pip install -r requirements.txt
python app.py
# Visit http://localhost:7860/docs

License

MIT