我有一条定义如下的路线:
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试图实现的东西,但这种方式似乎也很容易,如果我可以判断返回基于来电者。
谢谢!
肖恩
答案 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)