Es gab eine Szene, in der ich das API-Dokument swagger.json erhalten wollte, ohne den Server mit Flask-RESTX zu starten.
Zunächst wird der Beispielcode der Flask-Anwendung angezeigt.
from flask import Flask
from flask_restx import Api, Resource, fields
def create_app():
app = Flask(__name__)
api = Api(app)
@api.route("/sample")
class SampleResource(Resource):
@api.marshal_with(api.model("sample model", {
"name": fields.String,
"age": fields.Integer,
}))
def get(self):
raise NotImplementedError()
return app
Wenn Sie es mit "flask run" starten, können Sie swagger.json erhalten, indem Sie auf http://127.0.0.1:5000/swagger.json zugreifen.
Diese Methode benötigt jedoch Zeit, um den Debug-Server zu starten, um swagger.json zu erhalten. In Fällen, in denen Sie swagger.json mithilfe von CI usw. automatisch erfassen und freigeben möchten, treten einige Schwierigkeiten auf. ..
Wenn Sie das folgende Skript vorbereiten und ausführen, können Sie daher swagger.json abrufen, ohne den Flask-Server zu starten.
import json
import sys
from app import create_app
app = create_app()
json.dump(
app.test_client().get("/swagger.json").get_json(),
sys.stdout,
)
Ich verwende den mit Flask gelieferten Testclient.
Dieses Skript erzeugt eine Standardausgabe, aber Sie können eine JSON-Datei erhalten, indem Sie in eine Datei umleiten.