Reference library

API design & gRPC

REST best practices, protobuf, API versioning, and backward-compatible service contracts.

10 matches
API design & gRPC easy

Create a Data Helper in Python for gRPC-style APIs

This code builds a simple DataHelper class that mimics gRPC request/response handling with in-memory storage, JSON serialization, and basic CRUD operations for beginners.

dataclasses grpc api-design
Python
import json
from dataclasses import dataclass, asdict
from typing import Dict, Any


@dataclass
class User:
    user_id: int
    name: str
    email: str


class DataHelper:
    """Simple helper to demonstrate gRPC-like data handling for beginners."""

    def __init__(self) -> None:
        self._users: Dict[int, Use…
16 0 Open
API design & gRPC easy

Generate an OpenAPI Spec from Mock Routes in Python

This Python script generates an OpenAPI 3.0 specification from a simple mock routes dictionary, mapping each HTTP method to response examples.

openapi api-docs api-design
Python
import json
from pathlib import Path


def generate_openapi_spec(routes: dict, title: str = "Mock API", version: str = "1.0.0") -> dict:
    paths = {}
    for route, methods in routes.items():
        path_item = {}
        for method, response_data in methods.items():
            method = method.lower()
            …
17 0 Open
API design & gRPC easy

How to Add HATEOAS Links to a Python API Response

Build a Python API resource class that adds self and next HATEOAS links to JSON responses, with a mock example for pagination.

hateoas api-design rest
Python
import json


class Resource:
    def __init__(self, name, data, next_page=None):
        self.links = {"self": f"/api/resources/{name}"}
        if next_page is not None:
            self.links["next"] = f"/api/resources?page={next_page}"
        self.data = data

    def to_dict(self):
        return {"links": self.…
13 0 Open
API design & gRPC easy

How to Build a Simple Filter Helper in Python for API Design

Create a reusable data filter service with dataclasses that mimics gRPC request/response patterns for filtering dataset records.

filtering dataclasses grpc
Python
from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any


@dataclass
class FilterRequest:
    """A simple filter request mirroring a gRPC message structure."""
    field_name: str
    operator: str  # eq, ne, gt, lt, contains
    value: Any
    page_size: int = 10
    page_token: Optional…
13 0 Open
API design & gRPC easy

How to Create an RFC 7807 Error JSON in Python

Construct a structured error response using the RFC 7807 Problem Details format with a reusable function.

rfc7807 json error-handling
Python
import json
from typing import Dict


def create_rfc7807_error(
    type_: str,
    title: str,
    status: int,
    detail: str,
    instance: str,
    extra_fields: Dict[str, object] | None = None,
) -> str:
    """
    Build a JSON string following RFC 7807 Problem Details format.
    """
    problem = {
        "t…
14 0 Open
API design & gRPC easy

How to Expand Related Resources with a Mock Embed in Python

Simulate API response embedding by attaching mock embedded data to each related resource in a list using a simple Python class.

api embed mock
Python
import json

class EmbedMock:
    def __init__(self, resources):
        self.resources = resources

    def expand(self):
        for resource in self.resources:
            resource["embedded"] = self._generate_embed()

    def _generate_embed(self):
        return {
            "id": 1,
            "type": "mock",
…
15 0 Open
API design & gRPC easy

How to Implement Sparse Fieldsets in Python

A function that filters API responses by resource type, returning only requested fields plus IDs, as a sparse fieldset mock.

api jsonapi sparse-fieldsets
Python
from dataclasses import dataclass, field
from typing import Dict, List, Optional


@dataclass
class MockResponse:
    data: Dict[str, object] = field(default_factory=dict)
    included: List[Dict[str, object]] = field(default_factory=list)


def select_fields(
    data: Dict[str, object],
    sparse_fields: Optional[D…
12 0 Open
API design & gRPC easy

How to Mock HTTP 304 Responses with If-None-Match in Python

Spin up a local HTTP server that returns a 304 Not Modified when a request carries a matching ETag, useful for testing cache behavior.

http caching mock-server
Python
from http.server import BaseHTTPRequestHandler, HTTPServer
from threading import Thread
import urllib.request

ETAG = '"abc123"'
BODY = b'{"status": "ok"}'

class MockServer(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.headers.get('If-None-Match') == ETAG:
            self.send_response(304)
        …
11 0 Open
API design & gRPC easy

How to Mock an API Key Header Authentication Server in Python

A minimal HTTP server that validates requests using an X-API-Key header and returns JSON responses for authenticated and unauthenticated calls.

api authentication http
Python
import json
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer

API_KEYS = {"test-user": "secret-key-123"}

class AuthHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        auth = self.headers.get("X-API-Key")
        if not auth or auth not in API_KEYS.values():
            self.send_response…
13 0 Open
API design & gRPC easy

How to Serialize a Dataclass to JSON in Python

Serialize a Python dataclass instance to JSON using asdict and json.dumps for API responses or mocks.

dataclass json serialization
Python
from dataclasses import dataclass, asdict
import json


@dataclass
class UserResponse:
    id: int
    name: str
    email: str
    active: bool = True


if __name__ == "__main__":
    response = UserResponse(id=42, name="Ada Lovelace", email="ada@example.com")
    print(json.dumps(asdict(response), indent=2))
13 0 Open

Browse by section

Each section groups closely related Python snippets.

API design & gRPC — Python code examples

What you will find here

This page collects api design & grpc snippets — short, copy-ready Python you can paste into our free online IDE and run without installing anything. Each sample includes a plain-English explanation and the full source code.

Samples vs tutorials and challenges

Samples are quick reference — one concept per page. For step-by-step teaching, use our Python tutorials. To test yourself, try quizzes or coding challenges. Clean up style with the Python formatter.