Python 将多个GET端点组合到单个资源中
我正在使用flask restful创建一个API,我想重构我的代码。我有一些东西如下所示: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
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