资讯专栏INFORMATION COLUMN

Flask编写API的核心思想

阿罗 / 1976人阅读

摘要:这篇文章,是我的自言自语为什么需要当客户端与服务器端分离时需要通过传递资源什么是资源即数据库中的数据如何表示资源使用的方式表示以键值的方式表示一个资源每一个键代表资源的一个属性使用数组列表表示资源的集合例如如何使用的方式对资源进行操作涉及方

这篇文章,是我的自言自语

Q: 为什么需要API

A: 当客户端与服务器端分离时, 需要通过API传递资源

Q: 什么是资源

A: 即数据库中的数据

Q: 如何表示资源

A: 使用json的方式表示, 以键值的方式表示一个资源, 每一个键代表资源的一个属性; 使用数组(列表)表示资源的集合, 例如

[
    {
        "id": 1,
        "username": "neo1218"
    },
    {
        "id": 2,
        "username": "zxc0328"
    }
]
Q: 如何使用HTTP的方式对资源进行操作

A: 涉及HTTP方法映射: 如下表

GET ------> 获取(集合,特定资源)
POST -----> 创建(特定资源)
PUT ------> 更新(特定资源)
DELETE ---> 删除(特定资源)
Q: 那么flask编写API的核心是什么?

A:

1. 提供资源

flask需要把数据库资源通过json的形式提供出去, 所以需要在数据库Model中定义to_json方法, 以
json的形式表示数据库数据, 以User类为例

class User(db.Model):
    ......
    def to_json(self):
        json_user = {
            "id": self.id,
            "username": self.username
        }
        return json_user
    ......
2. 接受json数据

flask需要接受客户端发送的json数据从而用于创建资源,
所以需要在数据库Model中定义from_json方法

class User(db.Model):
    ......
    @staticmethod
    def from_json(json_data):
        user = User(
            username = json_data.get("username"),
            password = json_data.get("password")
        )
        return user
    ......

并在API代码中搭配[request.get_json()]()使用

/api/users.py

from flask import request

@api.route("/users/", methods=["POST"])
def create_user():
    user = User.from_json(request.get_json())
    db.session.add(user)
    db.session.commit()
HTTP方法与操作对应

还是以用户资源为例:

@api.route("/users/", methods=["GET"])
def get_users():
    """获取用户资源集合"""
    pass

@api.route("/users//", methods=["GET"])
def get_id_users(id):
    """获取特定id用户资源"""
    pass

@api.route("/users/", methods=["GET", "POST"])
def create_user():
    """创建用户资源"""
    pass

@api.route("/users//", methods=["GET", "PUT"])
def update_id_user(id):
    """更新特定id用户资源"""
    pass

@api.route("/users//", methods=["GET", "DELETE"])
def delete_id_user(id):
    """删除特定id用户"""
    pass
Q: 所以说flask编写API的核心思想就是以json的方式表示和接收资源并将相应操作映射到http方法上从而操纵资源, 是吗?

A: 你这不是废话吗....

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37770.html

相关文章

  • Flask Web 测试驱动开发最佳实践之 Flask 实例

    摘要:当功能越来越复杂的时候,你可能修改了一些东西,导致另外一个功能的不可用,而单元测试也能保证了原有功能被破坏后能被检测出来。 showImg(https://segmentfault.com/img/remote/1460000017081749); 前言 前一篇讲到了 TDD 测试驱动开发的相关概念和环境搭建,这篇就着手开始用TDD方式开发了。首先这篇需要编写用户相关的API接口,如...

    wuyangnju 评论0 收藏0
  • 《Python Web开发》作者Harry Percival:TDD就是微小而渐进改变

    摘要:目前就职于,他在各种演讲研讨会和开发者大会上积极推广测试驱动开发。问很多敏捷教练都表示训练新人做测试驱动开发是一件辛苦而进度缓慢的事,并且收益也不是很大。首先是开发的对话式风格。第一个问题就是测试套件的速度。 Harry J.W. Percival目前就职于PythonAnywhere,他在各种演讲、研讨会和开发者大会上积极推广测试驱动开发(TDD)。他在利物浦大学获得计算机科学硕士学...

    Guakin_Huang 评论0 收藏0
  • 《Python Web开发》作者Harry Percival:TDD就是微小而渐进改变

    摘要:目前就职于,他在各种演讲研讨会和开发者大会上积极推广测试驱动开发。问很多敏捷教练都表示训练新人做测试驱动开发是一件辛苦而进度缓慢的事,并且收益也不是很大。首先是开发的对话式风格。第一个问题就是测试套件的速度。 Harry J.W. Percival目前就职于PythonAnywhere,他在各种演讲、研讨会和开发者大会上积极推广测试驱动开发(TDD)。他在利物浦大学获得计算机科学硕士学...

    k00baa 评论0 收藏0
  • 使用swagger 生成 Flask RESTful API

    摘要:指定筛选条件选择合适的状态码应答中,需要带一个很重要的字段。返回结果针对不同操作,服务器向用户返回的结果应该符合以下规范。如果状态码是,就应该向用户返回出错信息。 什么是 RESTful 什么是REST REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文 中提出来的一种...

    printempw 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<