在Flask-RestX里完全关闭swagger

flask-restx是个好东西,做API非常好用,虽然定义model比直接撸代码要烦一些,但是带来的好处是可以直接生成swagger,真是太方便了。

现在的问题是:这在开发测试阶段是很好,但是到了正式部署的时候还是应该把这些信息去掉,不然就方便了坏人了。

按照官方文档的说法,只要:

api = Api(app, doc=False)

即可"disable Swagger UI entirely",然而实际上并不"entirely"……

因为这样只是Swagger UI变成404了,但是swagger.json还在,只要贴到swagger editor就全出来了……

放狗搜了半天,只在flask-restx的前身flask-restplus的Issues里找到一个Issue#464有人报这个需求,但没有解决方案。

只好读代码,还好很快就找到关键了……

api.init_app(app, add_specs=False)

就是加上这个add_specs=False即可。

推送到[go4pro.org]