2013-01-12 8 views

答えて

18

Sphinxをお勧めします。__doc__としてドキュメントを追加し、autodocのSphinxモジュールでドキュメントを生成します(docs.python.orgでもSphinxを使用しています)。マークアップはreSTで、Markdownと似ています。

例えば:

@app.route('/download/<int:id>') 
def download_id(id): 
    '''This downloads a certain image specified by *id*''' 
    return ... 
+3

sphinxcontrib.autohttp.flask(http://pythonhosted.org/sphinxcontrib-httpdomain/#module-sphinxcontrib.autohttp.flask)というSphinxモジュールもあります。 –

6

フラスコの拡張があります:flask-autodoc特別にエンドポイントのルートルールを解析し、自動ドキュメントについて。単純なHTMLドキュメントのページはこのようなものです

@app.route('/doc') 
@auto.doc() 
def documentation(): 
    ''' 
    return API documentation page 
    ''' 
    return auto.html() 

@app.route('/') 
@auto.doc() 
def welcome(): 
    ''' 
    Welcome API 
    ''' 
    commit_hash = subprocess.check_output(["git", "rev-parse", "HEAD"]) 
    commit_msg = subprocess.check_output(["git", "log", "-1", "--format=%s"]) 
    date_time = subprocess.check_output(["git", "log", "-1", "--format=%cd"]) 
    return "Welcome to VM Service Server. <br/>" \ 
      "The last commit: %s<br/>Date: %s, <br>Hash: %s" % \ 
      (commit_msg, date_time, commit_hash), 200 

:あなたはドキュメントしたいAPIを指定するには、docデコレータを追加することができます

enter image description here

+7

私はそれが一種の意見であることを認識していますが、フラスコオートドックから離れて人々に警告します。拡張は本当に不完全です。それは素晴らしいものから始まり、あなたが期待する方法を設定しますが、最終的な結果は明るくありません。ほとんどの人はスフィンクスのためにそれを放棄し、フラスコオートドックで数時間を無駄にするでしょう。 – melchoir55

+0

30分前に私が見たことがあるのであれば... +1 – Zeb

+0

フラスコオートドックが不完全な理由を詳しく説明できますか?私はそのドキュメントを素早く見て、Flask-RESTplusよりもはるかに気に入っていました。 – imolit

16

私は本当にのようなSwaggerそれがAPIを生成することができますので、コードにいくつかのデコレータとコメントを追加するだけでドキュメントを作成できます。利用可能なのはFlask Swaggerです。

from flask import Flask 
from flask.ext.restful import Api 
from flask_restful_swagger import swagger 

app = Flask(__name__) 
api = swagger.docs(Api(app), apiVersion='1', api_spec_url="/api/v1/spec") 

class Unicorn(Resource): 
"Describing unicorns" 
@swagger.operation(
    notes='some really good notes' 
) 
def get(self, todo_id): 
... 

次に、あなただけの(それが自動的に静的に必要な機能)/ API/V1 /スペックを訪問し、HTMLインターフェイスで、あなたの方法や注意事項を確認することができます。 JSONでAPIの説明をすべて取得し、それ以外の場合は解析することもできます。

関連する問題