您的位置:58编程 > flask api Flask 用于 API 的方法视

flask api Flask 用于 API 的方法视

2023-05-05 12:33 Flask教程

flask api Flask 用于 API 的方法视

flask api Flask 用于 API 的方法视

flask api

Web API 的工作通常与 HTTP 动词紧密相关,所以这使得实现这样一个基于 ​MethodView​ 类的 API 很有意义。也就是说,你会注意到 大多数时候, API 需要不同的 URL 规则来访问相同的方法视图。譬如,想象一种 情况,你在 web 上暴露一个用户对象:

URL HTTP 方法 描述
/users/ GET 获得全部用户的列表
/users/ POST 创建一个新用户
/users/<id> GET 显示某个用户
/users/<id> PUT 更新某个用户
/users/<id> DELETE 删除某个用户

那么,你会想用 ​MethodView​ 做什么?诀窍是利用你可以 对相同的视图提供多个规则的事实。

让我们假设这时视图看起来是这个样子:

class UserAPI(MethodView):

    def get(self, user_id):
        if user_id is None:
            # return a list of users
            pass
        else:
            # expose a single user
            pass

    def post(self):
        # create a new user
        pass

    def delete(self, user_id):
        # delete a single user
        pass

    def put(self, user_id):
        # update a single user
        pass

如此,我们怎样把它挂载到路由系统中?添加两条规则,并且为每条规则显式地 指出 HTTP 方法:

user_view = UserAPI.as_view("user_api")
app.add_url_rule("/users/", defaults={"user_id": None},
                 view_func=user_view, methods=["GET",])
app.add_url_rule("/users/", view_func=user_view, methods=["POST",])
app.add_url_rule("/users/<int:user_id>", view_func=user_view,
                 methods=["GET", "PUT", "DELETE"])

如果你有许多看起来类似的 API ,你可以重构上述的注册代码:

def register_api(view, endpoint, url, pk="id", pk_type="int"):
    view_func = view.as_view(endpoint)
    app.add_url_rule(url, defaults={pk: None},
                     view_func=view_func, methods=["GET",])
    app.add_url_rule(url, view_func=view_func, methods=["POST",])
    app.add_url_rule("%s<%s:%s>" % (url, pk_type, pk), view_func=view_func,
                     methods=["GET", "PUT", "DELETE"])

register_api(UserAPI, "user_api", "/users/", pk="user_id")
阅读全文
以上是58编程为你收集整理的flask api Flask 用于 API 的方法视全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS