如何确定webapp2是否调用了您的函数,或者它是否是Python中的另一种方法?

时间:2014-02-20 05:57:55

标签: python webapp2

我有一条定义如下的路线:

webapp2.Route(r'/test/<var1>', handler="handlers.Test.test", methods="GET")

处理程序如下所示:

def test(self, var1=None):

当我从诸如(案例A)的网址中调用它时:

http://localhost:8080/test/helloworld

我得到了变量

var1=helloworld 

非常酷。现在让我们说而不是从URL调用它而不是想从另一个函数ala调用它(案例B):

def calltest(self):
    self.test(helloworld)

我怎样才能确定如果A从webapp2路由中调用它,并且在B情况下我可以通过应用程序本身告诉它是从另一个函数调用的?

为什么AI想要返回JSON,因为浏览器不会说Python,以防BI希望返回一个对象,因为调用函数本身就是Python,所以它可以理解返回类型。

作为一个可能的旁注,这是我尝试双重使用相同的方法,这有点像我想的那样像Endpoints试图实现的东西,但这种方式似乎也很容易,如果我可以判断返回基于来电者。

谢谢!

肖恩

1 个答案:

答案 0 :(得分:0)

我不熟悉webapp2,但以下内容可能有效:

def test(var1=None):
    return { var1: var1 }


def calltest():
    d = test()
    print(d['var1'])


def disp(router, request, response):
    rv = router.default_dispatcher(request, response)
    # turn dict into json and craft the response
    return webapp2.Response(json.dumps(rv))
    # alternatively, you could make your handlers return objects with a .json()
    # method and call that


app = webapp2.WSGIApplication([
    webapp2.Route(r'/test/<var1>', handler=test, methods="GET"),
])

app.router.set_dispatcher(disp)