問題
- 近期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
解決方案
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/
- 補充,作者的意圖應該是可以靈活的決定資源文件位置。如果有其它絕對位置可放,可以視情修改。