我正在使用flask restful 创建一个API,我想重构我的代码。我有如下所示的东西:class Makequestions(Resource): def get(self): #somecodeclass Managequestions(Resource): def get(self, user_id): #somecodeAPI.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>')我希望这会减少我必须创建“资源类”的次数。有什么办法可以做到这一点?
2 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
除了函数的命名之外,你可能会做一些类似的事情
class Question(Resource):
def get(self, user_id=0):
if(user_id):
return specific question
return list of questions
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
我对 Flask RESTful API 不是很熟悉,但是虽然 Python 可以让你用get(self)
and重载一个类get(self, question_id)
,如果你“制作”一个 REST 资源,那不应该是一个 GET 请求。
REST API URL 不应包含诸如“MakeObject”或“ManageObject”之类的动词。HTTP 方法应该指示正在执行的操作。
话虽如此,POST /question
将成为一个问题对象。GET /question/:id
应该返回一个特定的。
因此,您将 在单个资源下定义post(self)
和。或者添加一个资源,您可以在其中获取所有问题,然后将 post 方法移到那里。get(self, question_id)
Question
Questions
如果将“问题”替换为“ TODO”,则问题与Flask RESTful网站上的完整示例没有什么不同
注:多个URL也优于单一的,所以你的情况,/questions
并/questions/:id
应被定义为两个资源
添加回答
举报
0/150
提交
取消