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 UJSONResponse

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 UJSONResponse(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)):
        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.11.tar.gz (10.0 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: star_resty-0.0.11.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.4

File hashes

Hashes for star_resty-0.0.11.tar.gz
Algorithm Hash digest
SHA256 4d8a93bd7e38883a898a6b21b108a6d362227ab091cdc8dfb1d9455729d456b8
MD5 4429834bff46e3274c632492bc61fecc
BLAKE2b-256 31890769d84a526217a73743757d16ee12c3bd5fec206007377df3ebceb8b9f1

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