如何为 url 参数编写文档字符串

E.S*_*rra 2 python docstring url-parameters flask

我们有一个 Flask api,我正在为这些类编写文档字符串。每个 get 方法都有 url/?key=value 形式的 url 参数,例如 /?format=csv,在编写文档字符串时,记录它们的最佳/推荐方式是什么?我的第一个想法是将它们放入方法文档字符串中,但 pycharm 和 pylint 抱怨,因为它们不是方法的实际参数。

谢谢

mat*_*yas 5

当谈到记录 API 时,有多种方法。Swagger 是一种广泛采用的文档解决方案。

为了使用 Swagger 记录 Flask 项目,有一个名为 flasgger的库

有了这个库,你可以将API文档直接放在Docstrings中:source

import random
from flask import Flask, jsonify, request
from flasgger import Swagger

app = Flask(__name__)
Swagger(app)

@app.route('/api/<string:language>/', methods=['GET'])
def index(language):
    """
    This is the language awesomeness API
    Call this api passing a language name and get back its features
    ---
    tags:
      - Awesomeness Language API
    parameters:
      - name: language
        in: path
        type: string
        required: true
        description: The language name
      - name: size
        in: query
        type: integer
        description: size of awesomeness
    responses:
      500:
        description: Error The language is not awesome!
      200:
        description: A language with its awesomeness
        schema:
          id: awesome
          properties:
            language:
              type: string
              description: The language name
              default: Lua
            features:
              type: array
              description: The awesomeness list
              items:
                type: string
              default: ["perfect", "simple", "lovely"]

    """

    language = language.lower().strip()
    features = [
        "awesome", "great", "dynamic", 
        "simple", "powerful", "amazing", 
        "perfect", "beauty", "lovely"
    ]
    size = int(request.args.get('size', 1))
    if language in ['php', 'vb', 'visualbasic', 'actionscript']:
        return "An error occurred, invalid language for awesomeness", 500
    return jsonify(
        language=language,
        features=random.sample(features, size)
    )


app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

如果您不想在文档字符串中记录参数,您也可以在单独的 YML 文件中指定它们。这里也描述了这一点