view.py icon indicating copy to clipboard operation
view.py copied to clipboard

Client Generation

Open ZeroIntensity opened this issue 2 years ago • 1 comments
trafficstars

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 avatar Oct 28 '23 14:10 ZeroIntensity

As an alternative, view could generate an OpenAPI specification.

ZeroIntensity avatar Nov 28 '23 15:11 ZeroIntensity