Flask MethodView与Flask-Restful Resource的区别

12

MethodView和Resource之间有什么区别?

它是通过flask-restful实现API的:

class API(Resource):
    decorators = [...,]

    def get(self):
        # do something
    def post(self):
        # do something
    def put(self):
        # do something
    def delete(self):
        # do something

实际上,它可以被Flask替代:

class API(MethodView):
    decorators = [...,]

    def get(self):
        # do something
    def post(self):
        # do something
    def put(self):
        # do something
    def delete(self):
        # do something

我认为Flask已经提供了足够的关于建立Restful API的内容。我无法找到flask-restful可以比flask更多做些什么,因为它们在相同机制的类中都有CRUD方法和装饰器。那么flask-restful有什么特别之处呢?

我正在评估Flask-Restful是否真的对我有必要。请告诉我,谢谢。

1个回答

5

我也曾经想过同样的问题,根据这篇文章(http://blog.miguelgrinberg.com/post/designing-a-restful-api-using-flask-restful)提供的信息,Resource是从Methodview中继承而来的。这篇文章还介绍了与普通Flask相比的附加值,例如“Flask-RESTful提供了一种更好的方式来处理RequestParser class,该类的工作方式类似于用于命令行参数的argparse。” 而许多涉及API的工作仍然涉及认证和安全性,例如参数/数据检查。

感谢Miguel撰写的精彩博客。我使用flask-restful因为它似乎已经非常成熟。

如果您的需求很小,则可以采用仅使用Flask的方法。


8
如果你考虑使用Flask-RESTful的RequestParser功能,我建议你阅读以下链接:http://flask-restful.readthedocs.io/en/0.3.5/reqparse.html和https://github.com/flask-restful/flask-restful/issues/335。基本上,RequestParser已被弃用,推荐使用webargs代替。现在,建议使用Flask MethodView + Flask-Classful + Marshmallow + Webargs(Flask-Classful是被废弃的Flask-Classy的分支),这也得到了Flask-RESTful开发者的认可。 - Jérôme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接