Skip to main content

Generate REST API and OpenAPI documentation for your Flask project.

Project description

Generate REST API and OpenAPI documentation for your Flask project.

test pypi pypistats pypi versions

Flask OpenAPI3 is a web API framework based on Flask. It uses Pydantic to verify data and automatic generation of interaction documentation.

The key features are:

Requirements

Python 3.8+

flask-openapi3 is dependent on the following libraries:

Installation

pip install -U flask-openapi3[swagger]

or

conda install -c conda-forge flask-openapi3[swagger]
Optional dependencies

To install these dependencies with flask-openapi3:

pip install flask-openapi3[yaml]
# or
pip install flask-openapi3[async]
# or
pip install flask-openapi3[dotenv]
# or
pip install flask-openapi3[email]
# or all
pip install flask-openapi3[yaml,async,dotenv,email]
# or manually
pip install pyyaml asgiref python-dotenv email-validator
# OpenAPI UI plugins
pip install -U flask-openapi3[swagger,redoc,rapidoc,rapipdf,scalar,elements]

A Simple Example

Here's a simple example, further go to the Example.

from pydantic import BaseModel

from flask_openapi3 import Info, Tag
from flask_openapi3 import OpenAPI

info = Info(title="book API", version="1.0.0")
app = OpenAPI(__name__, info=info)

book_tag = Tag(name="book", description="Some Book")


class BookQuery(BaseModel):
    age: int
    author: str


@app.get("/book", summary="get books", tags=[book_tag])
def get_book(query: BookQuery):
    """
    to get all books
    """
    return {
        "code": 0,
        "message": "ok",
        "data": [
            {"bid": 1, "age": query.age, "author": query.author},
            {"bid": 2, "age": query.age, "author": query.author}
        ]
    }


if __name__ == "__main__":
    app.run(debug=True)
Class-based API View Example
from typing import Optional

from pydantic import BaseModel, Field

from flask_openapi3 import OpenAPI, Tag, Info, APIView


info = Info(title='book API', version='1.0.0')
app = OpenAPI(__name__, info=info)

api_view = APIView(url_prefix="/api/v1", view_tags=[Tag(name="book")])


class BookPath(BaseModel):
    id: int = Field(..., description="book ID")


class BookQuery(BaseModel):
    age: Optional[int] = Field(None, description='Age')


class BookBody(BaseModel):
    age: Optional[int] = Field(..., ge=2, le=4, description='Age')
    author: str = Field(None, min_length=2, max_length=4, description='Author')


@api_view.route("/book")
class BookListAPIView:
    a = 1

    @api_view.doc(summary="get book list")
    def get(self, query: BookQuery):
        print(self.a)
        return query.model_dump_json()

    @api_view.doc(summary="create book")
    def post(self, body: BookBody):
        """description for a created book"""
        return body.model_dump_json()


@api_view.route("/book/<id>")
class BookAPIView:
    @api_view.doc(summary="get book")
    def get(self, path: BookPath):
        print(path)
        return "get"

    @api_view.doc(summary="update book")
    def put(self, path: BookPath):
        print(path)
        return "put"

    @api_view.doc(summary="delete book", deprecated=True)
    def delete(self, path: BookPath):
        print(path)
        return "delete"


app.register_api_view(api_view)

if __name__ == "__main__":
    app.run(debug=True)

API Document

Run the simple example, and go to http://127.0.0.1:5000/openapi.

OpenAPI UI plugins are optional dependencies that require manual installation.

pip install -U flask-openapi3[swagger,redoc,rapidoc,rapipdf,scalar,elements]

More optional ui templates goto the document about UI_Templates.

openapi

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

flask_openapi4-0.1.2.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

flask_openapi4-0.1.2-py2.py3-none-any.whl (45.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flask_openapi4-0.1.2.tar.gz.

File metadata

  • Download URL: flask_openapi4-0.1.2.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.0.0

File hashes

Hashes for flask_openapi4-0.1.2.tar.gz
Algorithm Hash digest
SHA256 af5a61aafe46259e619594ab0cc2a7d14e6854e8be4d9474d614c9a0c3907c73
MD5 af85d2fbe932a08ef0aec55121b10a0e
BLAKE2b-256 cbc13c1d432df1833654ae132c3b7bc42bdfd2a40c471be2ee8f6de1180532b3

See more details on using hashes here.

File details

Details for the file flask_openapi4-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: flask_openapi4-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.0.0

File hashes

Hashes for flask_openapi4-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bca8ff06b47781ccea924f70e50209cb4390a4e9880130c09ea6dc8c487d7567
MD5 2e23fec02e10da6fcce042d938b3de4c
BLAKE2b-256 ad919524ee5bbc1127e9904447decc771385f3e9b206ef89a62e7bcf61c89396

See more details on using hashes here.

Supported by

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