首页 > 编程知识 正文

Python Rest API 编辑教程

时间:2023-11-22 00:41:14 阅读:287436 作者:EHLB

本文将详细介绍使用 Python 编写 REST API 的方法和步骤。

一、准备工作

在开始编写 REST API 之前,我们需要准备以下工作:

1. 安装 Flask 框架

pip install Flask

2. 安装 Flask-RESTful 扩展

pip install flask-restful

3. 安装 Flask-JWT 扩展

pip install flask-jwt

二、编写 REST API

1. 设置 Flask 应用

首先,我们需要在 Python 中创建一个 Flask 应用。下面是一个简单的 Hello World 程序:


from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

这个应用将会在本地运行,并监听 5000 端口。在浏览器中访问 http://localhost:5000/,可以看到 "Hello, World!"。

2. 添加 REST API 路由

接下来,我们需要添加 REST API 的路由。


from flask import Flask
from flask_restful import Resource, Api

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

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

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

这个应用中,我们首先创建了一个 api 对象,并将其与 Flask 应用绑定。然后,我们定义了一个 HelloWorld 类,继承自 Resource,并实现 get() 方法,返回一个 JSON 数据。最后,我们使用 add_resource() 方法将路由添加到应用中,并指定路由路径。

在浏览器中输入 http://localhost:5000/,可以看到返回的 JSON 数据:

{"hello": "world"}

3. 添加用户认证

对于一些敏感的 API,我们需要对用户进行认证验证。这里我们将使用 Flask-JWT 扩展。


from flask import Flask
from flask_restful import Resource, Api
from flask_jwt import JWT, jwt_required

app = Flask(__name__)
app.config['SECRET_KEY'] = 'super-secret'
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

class Secret(Resource):
    @jwt_required()
    def get(self):
        return {'answer': 42}

api.add_resource(HelloWorld, '/')
api.add_resource(Secret, '/secret')

def authenticate(username, password):
    if username == 'admin' and password == 'password':
        return {'username': username}
    return None

def identity(payload):
    if payload['identity'] == 'admin':
        return {'user_id': 1, 'username': 'admin'}

jwt = JWT(app, authenticate, identity)

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

在这个应用中,我们首先设置了一个应用密钥,用于在服务器端存储和验证用户身份信息。然后,我们添加了一个 Secret 类,使用 @jwt_required() 进行用户验证,只有当用户认证通过才能访问。

我们还编写了一个 authenticate() 函数,用于验证用户的账号和密码。如果验证通过,返回一个字典;否则,返回 None。我们还编写了一个 identity() 函数,用于获取用户信息。

在浏览器中访问 /secret,可以看到输出:

{"answer": 42}

但是在访问 /secret 时,需要携带 token,可以通过访问 /auth 获得 token:

curl -H "Content-Type: application/json" -X POST -d '{"username":"admin","password":"password"}' http://localhost:5000/auth

输出:

{"access_token":"...","refresh_token":"..."}

然后,在访问 /secret 时,需要设置请求头为:

Authorization: JWT {access_token}

其中,{access_token} 指的是上面获取到的 access_token。

三、总结

以上就是使用 Python 编写 REST API 的方法和步骤。通过 Flask 框架和 Flask-RESTful 扩展,我们可以非常快速地构建出一个功能完备、安全可靠的 API 应用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。