Python 如何处理多个';获取';Flask Restplus响应类中的端点

Python 如何处理多个';获取';Flask Restplus响应类中的端点,python,flask,flask-restplus,Python,Flask,Flask Restplus,我刚刚开始学习Flask,并尝试创建一个简单的API来处理数据处理后端(名为ATExplorer) 我首先创建了一个“后端”名称空间,即backendAPI: from flask import Flask, Blueprint, redirect, url_for from flask_restplus import Resource, Api from werkzeug.routing import Rule app = Flask(__name__) app.config.SWAGGER

我刚刚开始学习Flask,并尝试创建一个简单的API来处理数据处理后端(名为ATExplorer)

我首先创建了一个“后端”名称空间,即backendAPI:

from flask import Flask, Blueprint, redirect, url_for
from flask_restplus import Resource, Api
from werkzeug.routing import Rule

app = Flask(__name__)
app.config.SWAGGER_UI_DOC_EXPANSION = 'list'
blueprint = Blueprint('api', __name__, url_prefix='/api')
api = Api(blueprint, version=0.1, title='AT Pipeline API', doc='/swagger/')
app.register_blueprint(blueprint)
backendAPI = api.namespace('backend', description='Manage ATExplorer backend API.')
我需要两个端点,version,返回后端的版本,例如0.1和status,返回后端的状态,例如“stopped”或“running”

我创建了一个响应类和如下路由:

@backendAPI.route('/version', methods=['GET'])
@backendAPI.route('/status',  methods=['GET'])

class Backend(Resource):

     def get(self):
        #How to differentiate between the ../backend/version call and a 
        # ../backend/status call here??
        #if call is for status:
        #     return {'status': 'running'}
        #elif call is for version
        #     return {'version': '0.1'}
我猜这是一个设计问题。对于这种情况,什么“设计”更可取

----编辑----- 可以重写上述代码,通过以下操作获得所需的最终(客户端)结果:

class Backend(Resource):
    def __init__(self, api=None, *args, **kwargs):
         #The 'actual' backend resource
         self.backend = atp.backend

@backend_api.route('/status',  methods=['GET'])
class Dummy(Backend):
     def get(self):
         return {'status':self.backend.getStatus()}

@backend_api.route('/version',  methods=['GET'])
class Dummy(Backend):
     def get(self):
         return {'status':self.backend.getVersion()}
它似乎允许使用相同名称的多个类,根据“路由”装饰器执行不同的操作,即类名是不相关的


是否有一种“文本书”方式来表达上述逻辑?

我认为这更像是一个
flask\u restplus
问题,因为在flask中,您通常使用方法作为路由

不管怎样,您是否考虑过使用两个不同的类来执行两个不同的操作

@backendAPI.route('/version',methods=['GET'])
类版本(资源):
def get(自我):
返回烧瓶.jsonify({“版本号”:“0.1”})
@backendAPI.route('/status',methods=['GET'])
班级状态(资源):
def get(自我):
return flask.jsonify({“status”:“running”})

谢谢@AdamGold,我最终使用了你的方法。不幸的是,看起来开销很大。我不会使用相同的类名。它的可读性要差得多,而且似乎这两个类以某种方式连接在一起(逻辑上)。好吧,我关心的是一个框架,它首先允许编写和执行这样的代码。。听起来上面的内容最好用C/C++中常用的匿名结构来表达。看到类名真正重要的情况会很有用。我不是一个
flask restplus
高手,但我很确定类名对可读性很重要,仅此而已。它还干扰了所提供的UI(即,当单击包含相同类名的路由时,它会滚动到第一个路由)