Adds Docs support to Flask.
Project description
Flask-Docs
Adds Docs support to Flask.
English | 简体中文
Features
- Automatic generation of markdown documentation
- Support offline markdown document download
- Support Flask-RESTful
- Support Flask-RESTX
- Support Flask MethodView
- Support online debugging
- Support command to generate offline document
- HTML
- Markdown
Installation
pip3 install Flask-Docs
Usage
from flask import Flask
from flask_docs import ApiDoc
app = Flask(__name__)
ApiDoc(
app,
title="Sample App",
version="1.0.0",
description="A simple app API",
)
View the documentation page
http://127.0.0.1/docs/api/
Page demo
Configuration
# Using CDN
# app.config["API_DOC_CDN"] = True
# Disable document pages
# app.config["API_DOC_ENABLE"] = False
# SHA256 encrypted authorization password, e.g. here is admin
# echo -n admin | shasum -a 256
# app.config["API_DOC_PASSWORD_SHA2"] = "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
# Methods allowed to be displayed
# app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"]
# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"
# RESTful API class name to exclude
# app.config["API_DOC_RESTFUL_EXCLUDE"] = ["Todo"]
# Name of the API blueprint to be displayed
# app.config["API_DOC_MEMBER"] = ["api", "platform"]
# Name of the Submembers API function to be excluded
# app.config["API_DOC_MEMBER_SUB_EXCLUDE"] = ["delete_data"]
# Auto generating request args markdown
# app.config["API_DOC_AUTO_GENERATING_ARGS_MD"] = True
# Disable markdown processing for all documents
# app.config["API_DOC_ALL_MD"] = False
Tag @@@
# Process all documents in markdown by default
# 1. use the `@@@` wrapper if you want to specify processing
# 2. Turn off `API_DOC_ALL_MD` and remove the `@@@` tag if you want to display the original document
@@@
# Write your markdown document here
@@@
API
@api.route("/add_data", methods=["POST"])
def add_data():
"""Add some data
### args
| args | required | request type | type | remarks |
|-------|----------|--------------|------|----------|
| title | true | body | str | blog title |
| name | true | body | str | person's name |
### request
```json
{"title": "xxx", "name": "xxx"}
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
"""
return jsonify({"api": "add data"})
app.register_blueprint(api, url_prefix="/api")
@api.route("/delete_data", methods=["GET"])
def delete_data():
"""Delete some data
@@@
### args
| args | required | request type | type | remarks |
|--------|----------|--------------|------|--------------|
| id | false | query | str | blog id |
| name | true | query | str | person's name |
### request
```
http://127.0.0.1:5000/api/delete_data?name=xxx
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return jsonify({"api": "delete data"})
app.register_blueprint(api, url_prefix="/api")
@platform.route("/get_something", methods=["GET"])
def get_something():
"""Get some data
@@@
### request example
```python
import requests
url="http://127.0.0.1:5000/platform/get_something"
try:
print(requests.get(url).text)
except:
pass
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return jsonify({"platform": "get something"})
app.register_blueprint(platform, url_prefix="/platform")
Flask-RESTful API
from flask_restful import Resource, Api
class Todo(Resource):
"""Manage todo"""
def post(self):
"""Add todo
@@@
### description
> Add todo
### args
| args | required | request type | type | remarks |
|-------|----------|--------------|------|----------|
| name | true | body | str | todo name |
| type | true | body | str | todo type |
### request
```json
{"name": "xx", "type": "code"}
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return {"todo": "post todo"}
def get(self):
"""Get todo
@@@
### description
> Get todo
### args
| args | required | request type | type | remarks |
|-------|----------|--------------|------|----------|
| name | true | query | str | todo name |
| type | false | query | str | todo type |
### request
```
http://127.0.0.1:5000/todo?name=xxx&type=code
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return {"todo": "get todo"}
restful_api = Api(app)
restful_api.add_resource(Todo, "/todo")
Flask MethodView API
For the time being, only url_rule with the same class name are supported
from flask.views import MethodView
class TodoList(MethodView):
"""Manage todolist"""
def put(self):
"""Change the data"""
return jsonify({"todos": "put todolist"})
def delete(self):
"""Delete the data"""
return jsonify({"todos": "delete todolist"})
app.add_url_rule("/todolist/", view_func=TodoList.as_view("todolist"))
Decorator @ApiDoc.change_doc
Reuse comments
from flask_docs import ApiDoc
return_json_str = '{"code": xxxx, "msg": "xxx", "data": null}'
@api.route("/add_data", methods=["POST"])
@ApiDoc.change_doc({"return_json": return_json_str})
def add_data():
"""Add some data
@@@
### return
```json
return_json
```
@@@
"""
return jsonify({"api": "add data"})
@api.route("/delete_data", methods=["GET"])
@ApiDoc.change_doc({"return_json": return_json_str})
def delete_data():
"""Delete some data
return_json
"""
return jsonify({"api": "delete data"})
Debugger
Command to generate offline document
- HTML: Run
flask docs html
will generate offline html document athtmldoc/
- Markdown: Run
flask docs markdown
will generate thedoc.md
offline markdown document
Examples
Thanks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
flask_docs-0.7.6.tar.gz
(542.4 kB
view details)
Built Distribution
Flask_Docs-0.7.6-py3-none-any.whl
(541.1 kB
view details)
File details
Details for the file flask_docs-0.7.6.tar.gz
.
File metadata
- Download URL: flask_docs-0.7.6.tar.gz
- Upload date:
- Size: 542.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df579c9264c806ca484ba612041a0b0bb550109ecedf3a0ee252bffc486fc2a3 |
|
MD5 | 315dc40d04c30ee5e4c08c567c7a3374 |
|
BLAKE2b-256 | b3041595d57e735fad536aa3d04f23b0830a6b75fe7f50de5cd731924a2d647d |
Provenance
File details
Details for the file Flask_Docs-0.7.6-py3-none-any.whl
.
File metadata
- Download URL: Flask_Docs-0.7.6-py3-none-any.whl
- Upload date:
- Size: 541.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0e1ae06e8879113d1a2ef1b4f476f73ced8dffba014d2a1379d4f51daf6391e |
|
MD5 | b8e0be5ba1db3ea9251d220260bff905 |
|
BLAKE2b-256 | cab8be216d59e83682ac931b25f0c06cf8614384b47a3504f6f4fc21cdc140a4 |