Skip to main content

Flask extension for generating restful apis using type hints to automatically (de)serialize parameters and generate openapi docs.

Project description

Flask-Hintful

Flask-Hintful helps you write Restful APIs using Flask by taking advantage of Python's type hints.

Includes support for serializing/deserializing parameters according to type hints and automatically generating OpenApi documentation for your registered routes.

Requirements

  • Python 3.7+
  • Flask
  • Marshmallow

Installation

Install using pip

pip install flask-hintful

Quick Start

Construct a FlaskHintful object by passing the Flask application as a parameter, then use the FlaskHintful object @route and .register_blueprint to register routes.

Create your view functions with type hints and FlaskHintful will serialize pass path args, query args and even the request body for you.

from dataclasses import dataclass
from datetime import date, datetime

from flask import Flask

from flask_hintful import FlaskHintful

app = Flask('My API')
api = FlaskHintful(app)


@dataclass
class NestedModel():
    str_field: str


@dataclass
class DataclassModel():
    str_field: str
    int_field: int
    float_field: float
    boolean_field: bool
    list_field: list
    date_field: date
    datetime_field: datetime
    nested_field: NestedModel


@api.route('/<id>/dataclass_test', methods=['POST'])
def dataclass_route(id: str, query_arg: int, model: DataclassModel) -> DataclassModel:
    '''my dataclass route'''
    return model


app.run()

You will be able to access the generated OpenApi on /swagger.

Preview1

License

This project is licensed under the MIT License - see the LICENSE file for details

Project details


Download files

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

Files for flask-hintful, version 0.0.3.dev3
Filename, size File type Python version Upload date Hashes
Filename, size flask_hintful-0.0.3.dev3-py3-none-any.whl (11.0 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size flask-hintful-0.0.3.dev3.tar.gz (8.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page