Skip to content

Content Renderers

Built-in Renderers

JSONRenderer

JSONRenderer()

Bases: ContentRenderer

JSON content renderer.

Functions

render
render(data: Any, request: Request) -> str

Render data as JSON.

HTMLRenderer

HTMLRenderer()

Bases: ContentRenderer

HTML content renderer with Jinja2 template support.

Functions

render
render(data: Any, request: Request) -> str

Render data as HTML.

This renderer now supports Jinja2 templates via the render() helper. For backward compatibility, it still accepts pre-rendered HTML strings.

PlainTextRenderer

PlainTextRenderer()

Bases: ContentRenderer

Plain text content renderer.

Functions

render
render(data: Any, request: Request) -> str

Render data as plain text.

ContentRenderer Base Class

ContentRenderer

ContentRenderer(media_type: str)

Base class for content renderers.

Functions

can_render
can_render(accept_header: str) -> bool

Check if this renderer can handle the given Accept header.

render
render(data: Any, request: Request) -> str

Render the data as this content type.

Overview

Content renderers convert response data into different formats based on the client's Accept header. RestMachine includes built-in renderers for JSON, HTML, and plain text.

Custom Renderers

Register custom renderers for specific content types:

@app.content_renderer("application/xml")
def render_xml(data):
    """Render data as XML."""
    return f"<result>{data}</result>"

@app.get('/data')
def get_data():
    return {"key": "value"}
    # Returns JSON or XML based on Accept header

See Also