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

我正在使用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>')

我希望这会减少我必须创建“资源类”的次数。有什么办法可以做到这一点?


catspeake
浏览 172回答 2
2回答

撒科打诨

除了函数的命名之外,你可能会做一些类似的事情class Question(Resource):&nbsp; &nbsp; def get(self, user_id=0):&nbsp; &nbsp; &nbsp; &nbsp; if(user_id):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return specific question&nbsp; &nbsp; &nbsp; &nbsp; return list of questions

拉莫斯之舞

我对 Flask RESTful API 不是很熟悉,但是虽然 Python 可以让你用get(self)and重载一个类get(self, question_id),如果你“制作”一个 REST 资源,那不应该是一个 GET 请求。REST API URL 不应包含诸如“MakeObject”或“ManageObject”之类的动词。HTTP 方法应该指示正在执行的操作。话虽如此,POST /question将成为一个问题对象。GET /question/:id应该返回一个特定的。因此,您将&nbsp;在单个资源下定义post(self)和。或者添加一个资源,您可以在其中获取所有问题,然后将 post 方法移到那里。get(self, question_id)QuestionQuestions如果将“问题”替换为“ TODO”,则问题与Flask RESTful网站上的完整示例没有什么不同注:多个URL也优于单一的,所以你的情况,/questions并/questions/:id应被定义为两个资源
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python