Flask RestAPI 快速入门

https://codeburst.io/this-is-how-easy-it-is-to-create-a-rest-api-8a25122ab1f3

Flask

Flask 是基于 Werkzeug 的微框架。

Installation

pip install flask-restful

安装 API 测试工具:

  • Postman 提供测试 API 节点,探测响应,甚至可以创建脚本并执行自动化测试。
  • Insomnia Postman 的开源替代品,具有基本的 API 节点测试,以及更好的 IMO 设计。

实现(Implementation)

我们来实现基本的 CRUD (Create, Read, Update, Delete) 功能,允许我们创建、获取、修改、删除用户。

首先导入模块并设置 Flask-Restful 应用:

from flask import Flask
from flask_restful import Api, Resource, reqparse

app = Flask(__name__)
api = Api(app)

接下来,我们创建一个数据列表和字典来模拟数据存储:

users = [
    {"username": "admin",
     "age": 22,
     "occupation": "Network Engineer"},
    {"username": "admin1",
     "age": 32,
     "occupation": "Doctor"},
    {"username": "admin2",
     "age": 42,
     "occupation": "Web Engineer"}
]

现在,我们定义一个 User 资源类来开始创建我们的 API 节点:

class User(Resource):
    def get(self, name):
        pass

    def post(self, name):
        pass

    def put(self, name):
        pass

    def delete(self, name):
        pass

REST API 的高质量之一在于它遵循标准的HTTP方法来指示要执行的预期操作。

细化 get 方法:

class User(Resource):
    def get(self, name):
        for user in users:
            if name == user["username"]:
                return user, 200
        return "User not found", 404

我们将遍历我们的用户列表来搜索用户,如果指定的名称与用户列表中的一个用户相匹配,我们将返回用户,同时返回200 OK,否则返回404找不到的用户找不到消息。精心设计的REST API的另一个特点是它使用标准的HTTP响应状态码来指示请求是否正在成功处理。

创建用户

    def post(self, name):
        parser = reqparse.RequestParser()
        parser.add_argument("age")
        parser.add_argument("occupation")
        args = parser.parse_args()

        for user in users:
            if name == user["username"]:
                return "User with name {} alreadly exists.".format(name), 400
        user = {
            "username": name,
            "age": args["age"],
            "occupation": args["occupation"]
        }

        users.append(user)
        return user, 201

我们将使用前面导入的reqparse创建一个解析器,将年龄和职业参数添加到解析器中,然后将解析的参数存储在一个变量中,args(参数将以form-data,JSON或XML)。如果同名的用户已经存在,则API将返回一条消息和400个错误请求,否则我们将通过将用户附加到用户列表来创建用户,并返回用户以及201 Created。

修改用户

    def put(self, name):
        parser = reqparse.RequestParser()
        parser.add_argument("age")
        parser.add_argument("occupation")
        args = parser.parse_args()

        for user in users:
            if name == user["username"]:
                user["age"] = args["age"]
                user["occupation"] = args["occupation"]
                return user, 200
        user = {
            "name": name,
            "age": args["age"],
            "occupation": args["occupation"]
        }
        users.append(user)
        return user, 201

删除用户

    def delete(self, name):
        global users
        users = [user for user in users if user["username"] != name]
        return "{} is deleted.".format(name), 200

最后,添加资源到路由中,并运行 Flask 应用。

api.add_resource(User, "/user/")

if __name__ == '__main__':
    app.run(debug=True)
python app.py

现在我们就可以使用 Postman 或者 Insomnia 来测试了。

你可能感兴趣的:(Flask RestAPI 快速入门)