Je suis en train de construire un microservice très complexe en utilisant Flask et Flask-Restplus.
Il aura de nombreux points d'extrémité, donc j'organise chaque point d'extrémité dans un Blueprint séparé.
- Actuellement, je me débats avec l'utilisation de Flask-Restplus et de l'API. l'utilisation de plusieurs Blueprints en combinaison avec swagger
- Je veux être en mesure d'obtenir tous les points de terminaison de mes bleus dans le swagger intégré de l'API, mais cela ne semble pas fonctionner.
- Je peux accéder à mes points de terminaison via postman, mais l'interface utilisateur swagger ne montre rien :(
L'exemple suivant de code et de structure de répertoire devrait vous donner une idée de mon idée :
.
endpoints
endpointa.py
endpointb.py
endpointc.py
__init__.py
__init__.py
run.py
Mon principal init .py ressemble à ceci :
from flask import Flask, Blueprint, logging, jsonify, request, Response
from flask_restplus import Resource, Api
# create app and api
app = Flask(__name__)
api_prefix = '/api/v1/'
# register Blueprints
from endpoints.endpointa import endpointa_api
app.register_blueprint(endpointa_api, url_prefix=api_prefix)
from endpoints.endpointb import endpointb_api
app.register_blueprint(endpointb_api, url_prefix=api_prefix)
from endpoints.endpointc import endpointc_api
app.register_blueprint(endpointc_api, url_prefix=api_prefix)
api = Api(app,
version='1',
title='Test Service REST-API',
description='A REST-API for the Test Service, implemented in python')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=5060)
endpointa.py avec le Blueprint correspondant :
from os import environ
import json, ast, syslog
import requests
import gc
from flask import Flask, Blueprint, logging, jsonify, request, Response
from flask_restplus import Resource, Api
endpointa_api = Blueprint('endpointa_api', __name__)
@endpointa_api.route('testa', methods=['GET'])
def testa():
...
@endpointa_api.route('testa/<string:testa_id>', methods=['GET', 'POST'])
def testa_id():
...
Encore une fois :
Je peux accéder à mes points de terminaison via postman, mais la swagger-UI ne montre rien :
Normalement, je devrais ajouter des points de terminaison à l'API en utilisant quelque chose comme
api.add_resource(TestClass, api_prefix + 'test')
mais cela ne semble pas être possible avec des Blueprints multiples.
Quelqu'un peut-il me montrer comment ajouter/enregistrer ces Blueprints (endpointa_api, endpointb_api et endpointc_api) avec Api ?