2013-01-12 15 views

cevap

18

Sana Sphinx öneriyoruz, (docs.python.org da Sphinx kullanır) Eğer __doc__ olarak belgelere ekleyin ve Sfenks'in autodoc modül sizin için dokümanlar üretecektir. İşaretleme, Markdown'a benzer reST'dur.

ör .:

@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) adlı bir Sfenks modülü bile var. –

6

bir Matara uzantısı vardır: flask-autodoc özel uç nokta rota kuralı ayrıştırma oto belgeleri için. Basit html dokümantasyon sayfasındaki böyledir

@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 

: Sen doc istediğiniz API'leri belirtmek için doc dekoratör ekleyebilir

enter image description here

+7

Bunun bir fikir olduğunu anlıyorum ama insanları flask-autodoc'tan uzaklaştıracağım. Uzantı gerçekten eksik. Harika başlıyor ve beklediğiniz şekilde ayarlanıyor, ancak sonuçta eksiklik var. Çoğu insan sfenks için onu terk eder ve flask-autodoc üzerinde birkaç saat harcayacak. – melchoir55

+0

Sadece bu 30 dakika önce görmüştüm ... +1 – Zeb

+0

Neden flask-autodoc eksik olduğunu açıklayabilir misiniz? Bunun için belgelere hızlıca baktım ve çok beğendim, örneğin Flask-RESTplus. – imolit

16

Gerçekten gibi Swagger bir API elde etmelerini sağladığı için kodunuza sadece birkaç dekoratör ve yorum ekleyerek belgeler. Flask Swagger kullanılabilir.

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

Sonra sadece (otomatik statik gerekli hizmet vermektedir)/API/v1/spec ziyaret ederek bir html arayüzünde yöntem ve notlar görebilirsiniz. Ayrıca tüm API açıklamanızı JSON’a aktarabilir ve aksi halde çözümleyebilirsiniz.