python_docs的nginx跳轉異常的處理

問題

  • 近期api學習中嘗試採用 python_docs 來描述api的文檔。。
    • http://localhost:5000/docs/api/ 成功的看到註釋。
  • 通過nginx上配置api的跳轉到Jump項。發現訪問異常,看不到api項。
    • http://localhost/jump/docs/api/

分析

  • 先說結論:頁面代碼導致的瀏覽器的錯誤指向
  • 查看頁面代碼:
    <script src="/static/vue.min.js"></script>
    <script src="/static/index.js"></script>
    <script src="/static/marked.min.js"></script>
    <script src="/static/FileSaver.min.js"></script>      
    
  • 可以看出是因爲src引用了根目錄,所以瀏覽器做了錯誤的指向,需要改成相對目錄。
  • 查看python_docs的源代碼,發現作者已經預留了接口
    <script src="{{find_resource('vue.js', cdn='vue')}}"></script>
    <script src="{{find_resource('index.js', cdn='elementJs', use_minified=False)}}"></script>
    <script src="{{find_resource('marked.js', cdn='marked')}}"></script>
    <script src="{{find_resource('FileSaver.js', cdn='fileSaver')}}"></script>    
    
        app.jinja_env.globals['find_resource'] = find_resource
    

解決方案

  • 重載上述的find_resource
  from flask_docs import ApiDoc
  import flask_docs
  app.config["API_DOC_MEMBER"] = ['barn.*','readme.*']
  ApiDoc(app=app)

  def find_resource_ex(filename, cdn, use_minified=True, local=True):
      df = flask_docs.find_resource(filename,cdn,use_minified,local)
      if df.startswith('/docs/api/'): df=df[len('/docs/api/'):]
      return df
  app.jinja_env.globals['find_resource'] = find_resource_ex
  • 打開頁面成功 http://localhost/jump/docs/api/
  • 補充,作者的意圖應該是可以靈活的決定資源文件位置。如果有其它絕對位置可放,可以視情修改。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章