2015-05-26 111 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