Skip to main content

The web framework

Project description

Star resty

Object-oriented rest framework based on starlette, marshmallow and apispec.

Requirements

  • [Python] 3.7+
  • [Starlette] 0.12.0+
  • [Marshmallow] 3.0.0rc8+
  • [APISpec] 2.0.2+

Installation

$ pip install star_resty

Example

from dataclasses import dataclass
from typing import Optional

from marshmallow import Schema, fields, post_load, ValidationError
from starlette.applications import Starlette
from starlette.responses import JSONResponse

from star_resty import Method, Operation, endpoint, json_schema, query, setup_spec


class EchoInput(Schema):
    a = fields.Int()


@dataclass
class Payload:
    a: int
    s: Optional[str] = None


class PayloadSchema(Schema):
    a = fields.Int(required=True)
    s = fields.String()

    @post_load
    def create_payload(self, data, **kwargs):
        return Payload(**data)


app = Starlette(debug=True)

@app.exception_handler(ValidationError)
def register_error(request, e: ValidationError):
    return JSONResponse(e.normalized_messages(), status_code=400)


@app.route('/echo')
@endpoint
class Echo(Method):
    meta = Operation(tag='default',
                     description='echo')
    response_schema = EchoInput
    async def execute(self, query_params: query(EchoInput)):
        self.status_code = 201  # Configurable Respone Http Status Code
        return query_params


@app.route('/post', methods=['POST'])
@endpoint
class Post(Method):
    meta = Operation(tag='default', description='post')

    async def execute(self, item: json_schema(PayloadSchema, Payload)):
        return {'a': item.a * 2, 's': item.s}


if __name__ == '__main__':
    import uvicorn

    setup_spec(app, title='Example')
    uvicorn.run(app, port=8080)

Open http://localhost:8080/apidocs.json to view generated openapi schema.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

star_resty-0.0.14.tar.gz (10.8 kB view details)

Uploaded Source

File details

Details for the file star_resty-0.0.14.tar.gz.

File metadata

  • Download URL: star_resty-0.0.14.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.9

File hashes

Hashes for star_resty-0.0.14.tar.gz
Algorithm Hash digest
SHA256 2b25f60b308f1655a7840378a1a2660e83e7d890382e8d5eb19c8f56246a55f1
MD5 3fb6338549d3aeefa0b118b93fe53038
BLAKE2b-256 76ffc9e90ccdfd31306dc73539ddc847757e48726515f5f46d6e5374297ca385

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page