2017-05-07 7 views
0

CherryPyを静的ファイルと私のREST APIの両方にホストするのに少し苦労しています。私は、APIをhttp://127.0.0.1:8080/apiに、そしてすべての静的ファイルをhttp://127.0.0.1:8080/にします。ユーザーがちょうど/apiGETのURLを使用している場合は、そのAPIの使用方法に関するマニュアルで静的なHTMLを提供します。 /の静的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、それは/上と同じように機能する場合を除き、ほとんどがあります。次のようにmyApp()クラスのindexがある:

@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) 
+0

このhttp://stackoverflow.comを見て/ a/15789415/5476782 あなたの定義には、 '/'で必要な静的ファイル用の別のページハンドラが必要だと思います。 – Kruser

答えて

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() 
関連する問題