我正在使用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>')
我需要将这两个资源合并为一个具有多个端点的资源,例如:
class Makequestions(Resource):
def get(self):
#somecode
def get(self, user_id):
#somecode
也许有一个最终网址,类似于
API.add_resource(MakeQuestions, '/MakeQuestions','/MakeQuestions/<int:user_id>')
我希望这将减少我必须创建“资源类”的次数。有什么办法可以做到吗?
答案 0 :(得分:0)
我对Flask RESTful API并不十分熟悉,但是Python使您可以使用get(self)
和get(self, question_id)
重载一个类,但是,如果您正在“制作” REST资源,那应该不是GET请求。
REST API URL不应包含诸如“ MakeObject”或“ ManageObject”之类的动词。 HTTP方法应指示正在执行的操作。
话虽这么说,POST /question
会成为一个问题对象。 GET /question/:id
应该返回一个特定的值。
因此,您将在单个post(self)
资源下定义get(self, question_id)
和Question
。或也添加一个Questions
资源,您可以在其中获得所有问题,然后在其中移动post方法。
如果将“问题”替换为“待办事项”,则您的问题与full example on the Flask RESTful site没什么不同
注意:复数URL比单数URL更受欢迎,因此在您的情况下,/questions
和/questions/:id
应该定义为两个资源
答案 1 :(得分:0)
除了命名功能之外,您还可以做类似
的操作class Question(Resource):
def get(self, user_id=0):
if(user_id):
return specific question
return list of questions