Flask-Docs自動(dòng)生成Api文檔安裝使用教程
Flask-Docs
影響我寫(xiě)文檔的原因可能是代碼和文檔分離,有時(shí)候?qū)懲甏a會(huì)忘記補(bǔ)文檔,而且不能及時(shí)查看,使用 Flask-Docs 可以解決我的問(wèn)題,這個(gè)插件可以根據(jù)代碼注釋生成文檔頁(yè)面,代碼注釋改動(dòng)文檔可以及時(shí)更新,而且支持離線文檔下載,支持在線調(diào)試。
Flask-Docs Flask Api 文檔自動(dòng)生成插件
特性
- 根據(jù)代碼注釋自動(dòng)生成文檔
- 支持離線 markdown 文檔下載
- 支持 Flask-RESTful
- 支持 Flask-RESTX
- 支持 flask.views.MethodView
- 支持在線調(diào)試
鏈接 https://github.com/kwkwc/flas...
安裝
pip3 install Flask-Docs
使用
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",
)配置
# 使用 CDN # app.config["API_DOC_CDN"] = True # 禁用文檔頁(yè)面 # app.config["API_DOC_ENABLE"] = False # SHA256 加密的授權(quán)密碼,例如這里是 admin # echo -n admin | shasum -a 256 # app.config["API_DOC_PASSWORD_SHA2"] = "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" # 允許顯示的方法 # app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"] # 自定義 url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # 需要排除的 RESTful Api 類名 # app.config["API_DOC_RESTFUL_EXCLUDE"] = ["Todo"] # 需要顯示的 Api 藍(lán)圖名稱 # app.config["API_DOC_MEMBER"] = ["api", "platform"] # 需要排除的子成員 Api 函數(shù)名稱 # app.config["API_DOC_MEMBER_SUB_EXCLUDE"] = ["delete_data"]
如何書(shū)寫(xiě) markdown 格式文檔
@@@
在注釋結(jié)尾用 "@@@" 包含 markdown 格式文檔
@@@
查看文檔頁(yè)面
http://127.0.0.1/docs/api/
Api demo
@api.route("/add_data", methods=["POST"])
def add_data():
"""Add some data
@@@
### args
| args | nullable | request type | type | remarks |
|-------|----------|--------------|------|----------|
| title | false | body | str | blog title |
| name | false | body | str | person's name |
### request
```json
{"title": "xxx", "name": "xxx"}
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return jsonify({"api": "add data"})
@api.route("/delete_data", methods=["GET"])
def delete_data():
"""Delete some data
@@@
### args
| args | nullable | request type | type | remarks |
|--------|----------|--------------|------|--------------|
| id | true | query | str | blog id |
| name | false | 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"})
@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"})
完整代碼
from flask import Blueprint, Flask, jsonify
from flask_docs import ApiDoc
app = Flask(__name__)
app.config["API_DOC_MEMBER"] = ["api", "platform"]
ApiDoc(
app,
title="Sample App",
version="1.0.0",
description="A simple app API",
)
api = Blueprint("api", __name__)
platform = Blueprint("platform", __name__)
@api.route("/add_data", methods=["POST"])
def add_data():
"""Add some data
@@@
### args
| args | nullable | request type | type | remarks |
|-------|----------|--------------|------|----------|
| title | false | body | str | blog title |
| name | false | body | str | person's name |
### request
```json
{"title": "xxx", "name": "xxx"}
```
### return
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
@@@
"""
return jsonify({"api": "add data"})
@api.route("/delete_data", methods=["GET"])
def delete_data():
"""Delete some data
@@@
### args
| args | nullable | request type | type | remarks |
|--------|----------|--------------|------|--------------|
| id | true | query | str | blog id |
| name | false | 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"})
@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(api, url_prefix="/api")
app.register_blueprint(platform, url_prefix="/platform")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)Flask-RESTful Api demo
from flask import Flask
from flask_restful import Api, Resource
from flask_docs import ApiDoc
app = Flask(__name__)
restful_api = Api(app)
ApiDoc(
app,
title="Sample App Restful",
version="1.0.0",
description="A simple app restful API",
)
class Todo(Resource):
"""Manage todo"""
def post(self):
"""Add todo
@@@
### description
> Add todo
### args
| args | nullable | request type | type | remarks |
|-------|----------|--------------|------|----------|
| name | false | body | str | todo name |
| type | false | 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 | nullable | request type | type | remarks |
|-------|----------|--------------|------|----------|
| name | false | query | str | todo name |
| type | true | 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.add_resource(Todo, "/todo")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)

flask.views.MethodView Api demo
目前只支持與類名相同的 url_rule
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"))裝飾器 @ApiDoc.change_doc
復(fù)用注釋
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"})調(diào)試器

以上就是Flask-Docs自動(dòng)生成Api文檔安裝使用教程的詳細(xì)內(nèi)容,更多關(guān)于Flask-Docs生成Api文檔的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python3實(shí)現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼
這篇文章主要介紹了Python3實(shí)現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
使用Python實(shí)現(xiàn)屏幕截圖功能的詳細(xì)教程
Python使用ImageGrab截圖主要依賴于Pillow庫(kù)(PIL庫(kù)的一個(gè)分支),該庫(kù)提供了ImageGrab模塊來(lái)實(shí)現(xiàn)屏幕截圖功能,以下是一個(gè)詳細(xì)的截圖教程,需要的朋友可以參考下2025-01-01
pd.read_csv讀取文件路徑出現(xiàn)的問(wèn)題解決
本文主要介紹了pd.read_csv讀取文件路徑出現(xiàn)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
關(guān)于Python自動(dòng)化操作Excel
這篇文章主要介紹了關(guān)于Python自動(dòng)化操作Excel, Python 是一種功能強(qiáng)大的編程語(yǔ)言,可以用于許多任務(wù),包括處理 Excel 文件,需要的朋友可以參考下2023-04-04

