为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

catspeake 2021-05-30 06:10:47
我正在使用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


查看完整回答
反对 回复 2021-06-01
?
拉莫斯之舞

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)QuestionQuestions

如果将“问题”替换为“ TODO”,则问题与Flask RESTful网站上的完整示例没有什么不同

注:多个URL也优于单一的,所以你的情况,/questions/questions/:id应被定义为两个资源


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信