Python restFUL Web服务 - 路由到文件中的特定功能

时间:2016-09-04 15:31:14

标签: python web-services rest http werkzeug

我正在使用werkzeug在python中实现一个简单的API。我创建了一个简单的应用程序'localhost'。我想在GET请求后执行一个函数。我对URL路由感到困惑。我已经完成了this教程并实现了路由,但仍然无法弄清楚如何将请求发送到另一个文件。这是我的代码:

url_map = Map([
    Rule('/spell', endpoint='spell_checker.py'),
    Rule('/he', endpoint='hello/test')
])


   @Request.application
    def application(request):
      urls = url_map.bind_to_environ(environ)
      try:
        endpoint, args = urls.match()
        print(endpoint + " " + args)
        #urls.dispatch('test')
      except httplib.HTTPException, e:
        return e(environ, start_response)

       start_response('200 OK', [('Content-Type', 'text/plain')])
       return ['Rul1e points to %r with arguments %r' % (endpoint, args)]

    if __name__ == '__main__':
        from werkzeug.serving import run_simple
        run_simple('127.0.0.1', 4000, application)

我在另一个名为hello.py的文件中有另一个在同一目录

def index():
    print 'This is the test'

我想从URL调用索引函数,如localhost:4000 / hello,它将调用文件hello.py的索引函数 请帮助我。

2 个答案:

答案 0 :(得分:0)

如果要首先使用外部库中的函数,则必须导入外部库

import foo #your library

然后,为了调用函数“foo_function”,你必须使用:

来调用这个函数
foo.foo_function(args) #where args are declared in the hello.py file

答案 1 :(得分:0)

  

端点通常是一个字符串,可以唯一使用   识别网址

因此它不会将函数绑定到url,您必须自己完成。 在此行之后

endpoint, args = urls.match()

在您的情况下,您可以使用某种控制语句来运行特定的函数:

if endpoint == "hello/test":
    hello.index(request, **args)

假设您在将浏览器指向hello时导入了\he模块,程序将调用hello.index函数。

http://werkzeug.pocoo.org/docs/0.11/tutorial/#step-4-the-routing