2015-05-26 35 views
0

我想用這樣的URL發送GET請求「/ api/stats?ad_ids = 1,2,3 & start_time = 2013-09-01 & end_time = 2013-10-01 「但我不知道如何將我的課程安裝到此網址。 我正在使用cherrypy安裝方法和MethodDispatcher。 到目前爲止,我設法從這個url api/stats/1調用GET方法。在url中使用cherrypy傳遞多個參數

此外,我應該傳遞給GET方法的參數是什麼?

我很感激任何建議或評論?

下面是代碼示例:

cherrypy.tree.mount(
    Ads(), '/api/stats', 
    {'/': 
     {'request.dispatch': cherrypy.dispatch.MethodDispatcher()} 
    } 
) 


def GET(self,ad_id=None,*args, **kwargs): 



    jsonData1={} 


    jsonData = self.readData() 

    counter2 = 0 
    for item in jsonData: 

     index = jsonData[item][2] 


     if index==ad_id: 

      jsonData1[counter2] = jsonData[item] 
      counter2 += 1 



    print jsonData1 
    return ('Here is the stat %s')%(jsonData1) 

預先感謝您!

BR,

莫米爾

回答

1

查詢字符串可以用GET方法的關鍵字參數來達到。

使用你的方法,你可以訪問他們的字典kwargs

cherrypy.tree.mount(
    Songs(), '/api/stats', 
    {'/': 
     {'request.dispatch': cherrypy.dispatch.MethodDispatcher()} 
    } 
) 

def GET(self,ad_id=None,*args, **kwargs): 
    start_time = kwargs.get('start_time', None) 
    end_time = kwargs.get('end_time', None) 
    # you can also use kwargs['XXX'] 
    # or do lookups with 'XXX' in kwargs 
    # or set (start_time=None, end_time=None) at the signature 
    # as a keyword argument. 
    jsonData1={} 
    jsonData = self.readData() 
    counter2 = 0 
    for item in jsonData: 
     index = jsonData[item][2] 
     if index==ad_id: 
      jsonData1[counter2] = jsonData[item] 
      counter2 += 1 
    print jsonData1 
    return ('Here is the stat %s')%(jsonData1) 

此外,*args將包含任何位置參數的URL的任何其他部分,例如/api/stats/1/a/b/c將創建args=('a', 'b', 'c')

+0

太好了!非常感謝! – Moki