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/
  • 补充,作者的意图应该是可以灵活的决定资源文件位置。如果有其它绝对位置可放,可以视情修改。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章