ZeroIntensity / view.py

The Batteries-Detachable Web Framework
https://view.zintensity.dev
MIT License
206 stars 15 forks source link

Client Generation #74

Open ZeroIntensity opened 8 months ago

ZeroIntensity commented 8 months ago

Feature description

Add support for generating an API client in JavaScript (including TypeScript support) or Python.

Ideally, to separate routes that are for HTML pages, an @api decorator could be added that marks a route for client generation. If the entire app is primarily API, a config setting like default_api = true could be added, and then HTML pages could be marked with an @page decorator.

It could also just be a smart system, where all GET routes are excluded except for those that are marked.

Feature example API

$ view gen python
Created `client.py`
# app.py
from view import new_app

app = new_app()

@app.get("/pets")
async def pets():
    return ["a", "b", "c"]
# client.py
class Client:
    async def pets() -> List[str]:
        ...

# API EXAMPLE
client = Client()
await client.pets()

Anything else?

No response

ZeroIntensity commented 7 months ago

As an alternative, view could generate an OpenAPI specification.