2016-04-12 15 views
1

Bir api.route ek açıklamayla tanımlanan birçok API'm olduğu bir "api" nesne ve bir apis.py dosyası var. örneğin:Uygulama yerine blueprint nesnesiyle url_map.iter_rules nasıl kullanılır?

@api.route('/', methods=['GET']) 
def get_info(): 

Ben yineleme ve ben app nesne üzerinde "url_map.iter_rules" kullandığınızda ne olsun aynı olan tüm API'leri özetini almak istiyorum. Bunu api blueprint nesnesini kullanarak nasıl yapabiliriz? Ben kullanarak benim init.py dosyasında plan kayıt yaptıran

from .api_1 import api as api_blueprint 
app.register_blueprint(api_blueprint) 

cevap

1

Sana planı kaydolduktan sonra size app.url_map.iter_rules() diyebilir mesela çok alt alanların uç noktaları tüm alırsınız düşünüyorum

api.py

from flask import Blueprint 
api = Blueprint('api', __name__) 
@api.route('/') 
def call_api(): 
     return "" 

init.py: Soruma gösterildiği gibi

from flask import Flask, Blueprint 
from api import api 

public = Blueprint('public', __name__) 
@public.route('/') 
def home(): 
     return render_template('public/home.html') 


app = Flask(__name__) 
app.register_blueprint(public) 
app.register_blueprint(api, subdomain='api') 
print(list(app.url_map.iter_rules())) 

[<Rule 'api|/' (GET, HEAD, OPTIONS) -> api.call_api>, 
<Rule '/' (GET, HEAD, OPTIONS) -> public.home>, 
<Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>] 
+0

Ben init.py benim app nesnesini başlatarak ediyorum ve sonra başka bir dosya apis.py nerede çağrıda Tanımladığım tüm API'larım var. Bu yüzden apis.py dosyasındaki planı kaydetmiyorum ve orada uygulama nesnesine sahip değilim. Ben sadece apis.py kullanarak blueprint'i ithal ediyorum. api içe aktar. Apis.py veya init.py'ye eklemek için tek ihtiyacım olan şeyi söyleyebilir misin? Bu API 'api.route ('/api/help ', methods = [' GET ']) 'olmak için sepete ihtiyacım var ve bu uygulamada nesne kullanarak' app.url_map.iter_rules() 'kodunu kullanabiliyorum. – aaj

+0

Kullanmak istiyorum: whch, doc dizelerini okur: 'api.route ('/ api/help', yöntemler = ['GET']) def yardım(): app kural için func_list = {} . url_map.iter_rules(): halinde rule.endpoint = static: docstring'ini = app.view_functions [rule.endpoint] .__ doc__ ise docstring'ini: func_list [docstring'ini] = rule.rule dönüş jsonify (func_list) ' – aaj

+0

tamam, modülleri cevabımda yeniden düzenledim, bu durum şimdiki durumunuzla eşleşiyor mu? modüllerde bir uygulama nesnesine ihtiyacınız yoktur. – maxymoo

İlgili konular