托管静态文件和应用程序

时间:2017-05-07 12:37:37

标签: python cherrypy

我对使用CherryPy同时托管静态文件和我的REST api感到有点困难。我希望API位于http://127.0.0.1:8080/api上,以及http://127.0.0.1:8080/上的所有静态文件。当用户只是GET /api网址时,我希望它能够提供静态HTML以及如何使用API​​的手册。 /网址上的静态html是HTML5应用; REST API的基本实现。

我现在拥有的是:

cherrypy.config.update({"tools.staticdir.on": True })
cherrypy.config.update({"tools.staticdir.dir": "/home/bart/html" })
#cherrypy.config.update({"tools.staticdir.index": "index.html"})

if __name__ == '__main__':  
    cherrypy.tree.mount(myApp(), "/api")

    cherrypy.engine.start()
    cherrypy.engine.block()

它几乎就在那里,除非我GET http://127.0.0.1:8080/api,它与/上的相同。 index类的myApp()如下:

@cherrypy.expose
def index(self):
    # TODO: place API docs here
    if cherrypy.request.method == "GET":    
        return "REST API v{v}".format(v=VERSION)
    else:
        return result(405)

1 个答案:

答案 0 :(得分:0)

我通过为空应用程序创建单独的配置来实现它:

cherrypy.tree.mount(myApp(), "/api")    
cherrypy.tree.mount(None, "/", {'/':
    {"tools.staticdir.on": True ,
    "tools.staticdir.dir": "/home/bart/html" ,
    "tools.staticdir.index": "index.html"
    } } )
cherrypy.engine.start()
cherrypy.engine.block()