2017-08-10 60 views
1

考慮下面的代碼燒瓶的.add_url_rule()中的「端點」是什麼?

import flask 

class API: 
    def hello(self): 
     return flask.Response('hello', 200) 

api = API() 
app = flask.Flask(__name__) 
app.add_url_rule('/', 'hello', api.hello) 
app.run() 

它返回的 「hello」 在一個GET調用/

documentation for add_url_rule指出

[add_url_rule]的作用完全象route()裝飾。

然而它需要至少三個參數。第一個和第三個是可以理解的,並且模仿@route()。第二個是什麼(在我的情況下爲hello)?

的文件進一步指出,這是

端點 - 端點已註冊的URL規則。 Flask本身假設視圖函數的名稱爲端點

這是什麼意思?爲什麼URL(/)和調用方法(api.hello)不夠? 「端點」的作用是什麼?它是如何使用的?

回答

3

這是名稱的路線;例如,您在url_for() function中使用的那個。端點名稱是視圖的註冊密鑰,這是一個符號名稱,通過該名稱可以引用來自應用程序其他部分的路由。

@route()取相同的參數;默認值是裝飾函數的名稱。這是add_url_rule()文檔以及文檔中都記載了@route()

  • 端點 - 端點已註冊的URL規則。 Flask本身將視圖函數的名稱視爲端點。

(粗斜體重點煤礦)。

注意,文檔中的例子試圖表明的一樣:

基本上這個例子:

@app.route('/') 
def index(): 
    pass 

等同於以下內容:

def index(): 
    pass 
app.add_url_rule('/', 'index', index) 

注第二個參數'index'與函數名稱匹配。

+0

是的,這是我在文檔中閱讀的內容,我試圖理解這是如何有用與只是URL和被調用的方法。你提到'url_for' - 我正在閱讀它的文檔(並試圖理解「三個理由」的理由)。感謝指針。 – WoJ

+0

@WoJ:因爲一個短的符號名稱勝過了一個可能包含模式的url路徑。符號名稱不太可能隨您的需求更改而改變。 –