2013-01-12 2 views

risposta

18

ti consiglierei Sphinx, si aggiunge la documentazione come __doc__ e il modulo autodoc della Sfinge genererà la documentazione per voi (docs.python.org inoltre usa Sfinge). Il markup è reST, simile a Markdown.

es .:

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

C'è persino un modulo Sphinx chiamato sphinxcontrib.autohttp.flask (http://pythonhosted.org/sphinxcontrib-httpdomain/#module-sphinxcontrib.autohttp.flask). –

6

C'è un'estensione Flask: flask-autodoc per la documentazione automatica appositamente parsing regola percorso endpoint. È possibile aggiungere doc decoratore per specificare che le API si desidera doc:

@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 

La semplice pagina di documentazione HTML è come questo:

enter image description here

+7

Mi rendo conto che è una specie di opinione, ma metterei in guardia le persone dalla fiaschetta-autodoc. L'estensione è davvero incompleta. Si inizia alla grande, e si imposta come ti aspetteresti, ma il risultato finale è poco brillante. La maggior parte della gente lo abbandonerà per sfinge e avrà sprecato poche ore in fiasco-autodoc. – melchoir55

+0

Se solo l'avessi visto 30 minuti fa ... +1 – Zeb

+0

Potresti spiegare perché flask-autodoc è incompleto? Ho dato una rapida occhiata alla documentazione per questo, e mi è piaciuto molto più di, ad esempio, Flask-RESTplus. – imolit

16

mi piace Swagger perché permette di generare un'API documentazione semplicemente aggiungendo alcuni decoratori e commenti nel codice. C'è uno Flask Swagger disponibile.

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): 
... 

Poi si può vedere i vostri metodi e le note in un'interfaccia HTML semplicemente visitando/api/v1/spec (Serve necessario statica automaticamente). Puoi anche ottenere tutta la descrizione dell'API in JSON e analizzarla in altro modo.