Python 将多个GET端点组合到单个资源中

Python 将多个GET端点组合到单个资源中,python,flask-restful,Python,Flask Restful,我正在使用flask restful创建一个API,我想重构我的代码。我有一些东西如下所示: class Makequestions(Resource): def get(self): #somecode class Managequestions(Resource): def get(self, user_id): #somecode API.add_resource(MakeQuestions, '/MakeQuestions') API.add_reso

我正在使用flask restful创建一个API,我想重构我的代码。我有一些东西如下所示:

class Makequestions(Resource):
    def get(self):
    #somecode

class Managequestions(Resource):
    def get(self, user_id):
    #somecode

API.add_resource(MakeQuestions, '/MakeQuestions')
API.add_resource(ManageQuestions, '/ManageQuestions/<int:user_id>')
也许有一个最终的url

API.add_resource(MakeQuestions, '/MakeQuestions','/MakeQuestions/<int:user_id>')
API.add_资源(MakeQuestions,'/MakeQuestions','/MakeQuestions/'))

我希望这能减少我创建“资源类”的次数,有什么方法可以做到吗?

我对Flask RESTful API不是很熟悉,但是Python会让你用
get(self)
get(self,question_id)
重载一个类,如果你正在“制作”REST资源,这不应该是GET请求

RESTAPI URL不应包含诸如“MakeObject”或“ManageObject”之类的动词。HTTP方法应该指示正在执行的操作

也就是说,
POST/question
将使问题成为对象
GET/question/:id
应该返回一个特定的

因此,您需要在单个
问题
资源下定义
post(self)
get(self,question\u id)
。或者添加一个
Questions
资源,您可以在其中获取所有问题,并将post方法移动到那里

如果将“问题”替换为“待办事项”,那么您的问题与


注意:复数URL也优于单数URL,因此在您的情况下,
/questions
/questions/:id
应该被定义为两个资源

class Question(Resource):
    def get(self, user_id=0):
        if(user_id):
            return specific question
        return list of questions

flask restfull的整个要点是将资源和集合分开。我建议您继续为单个资源创建一个类(GET[one]、PUT[update one]、DELETE[remove one]),并为集合资源创建另一个类(GET[multiple]、POST[create new])。我喜欢在35; django_rest_框架中的做法-资源类有list()用于获取集合和检索()只获取一个资源。我认为这更有意义,尽管flask restful似乎使用了不同的方法
class Question(Resource):
    def get(self, user_id=0):
        if(user_id):
            return specific question
        return list of questions