首页 » 网站推广 » phprestfulapi扩大技巧_FlaskRESTful 扩展

phprestfulapi扩大技巧_FlaskRESTful 扩展

访客 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

pip install Flask-RESTful利用 Flask-RESTful 重构 API

我们可以利用 Flask-RESTful 来简化之前的代码。
以下是利用 Flask-RESTful 重新编写一个大略的 RESTful API。

1. 导入和初始化

from flask import Flask, requestfrom flask_restful import Resource, Apiapp = Flask(__name__)api = Api(app)

Api 类用于注册资源(即视图),而 Resource 类是所有 API 资源的基类。

phprestfulapi扩大技巧_FlaskRESTful 扩展

2. 创建资源类

我们可以为用户操作创建一个 UserResource 类,它继续 Resource。
每个 HTTP 方法(如 GET, POST, PUT, DELETE)将作为类中的一个方法来定义。

phprestfulapi扩大技巧_FlaskRESTful 扩展
(图片来自网络侵删)

users = [ {'id': 1, 'name': 'Alice', 'age': 25}, {'id': 2, 'name': 'Bob', 'age': 30}]class UserList(Resource): def get(self): return {'users': users} def post(self): new_user = request.get_json() users.append(new_user) return new_user, 201class User(Resource): def get(self, user_id): user = next((u for u in users if u['id'] == user_id), None) if user is None: return {'error': 'User not found'}, 404 return user def put(self, user_id): user = next((u for u in users if u['id'] == user_id), None) if user is None: return {'error': 'User not found'}, 404 updated_data = request.get_json() user.update(updated_data) return user def delete(self, user_id): global users users = [u for u in users if u['id'] != user_id] return {'result': 'User deleted'}, 204UserList 类包含所有用户的操作,比如获取所有用户 (GET) 和创建新用户 (POST)。
User 类用于特定用户的操作,比如获取单个用户 (GET), 更新用户 (PUT), 和删除用户 (DELETE)。
3. 注册资源

利用 api.add_resource 方法将资源类和 URL 路径绑定:

api.add_resource(UserList, '/users')api.add_resource(User, '/users/<int:user_id>')4. 运行运用

if __name__ == '__main__': app.run(debug=True)完全代码

from flask import Flask, requestfrom flask_restful import Resource, Apiapp = Flask(__name__)api = Api(app)users = [ {'id': 1, 'name': 'Alice', 'age': 25}, {'id': 2, 'name': 'Bob', 'age': 30}]class UserList(Resource): def get(self): return {'users': users} def post(self): new_user = request.get_json() users.append(new_user) return new_user, 201class User(Resource): def get(self, user_id): user = next((u for u in users if u['id'] == user_id), None) if user is None: return {'error': 'User not found'}, 404 return user def put(self, user_id): user = next((u for u in users if u['id'] == user_id), None) if user is None: return {'error': 'User not found'}, 404 updated_data = request.get_json() user.update(updated_data) return user def delete(self, user_id): global users users = [u for u in users if u['id'] != user_id] return {'result': 'User deleted'}, 204api.add_resource(UserList, '/users')api.add_resource(User, '/users/<int:user_id>')if __name__ == '__main__': app.run(debug=True)上风视图类化:利用 Resource 类,可以将每个 HTTP 方法与一个类方法对应,使代码更具组织性。
要求解析:Flask-RESTful 供应了便捷的 reqparse 模块,便于验证要求参数。
相应格式化:自动将 Python 数据构造转换为 JSON 相应,无需手动调用 jsonify()。
利用 reqparse 进行要求验证

Flask-RESTful 供应了 reqparse 模块,可以轻松验证要求数据:

from flask_restful import reqparseparser = reqparse.RequestParser()parser.add_argument('name', type=str, required=True, help='Name cannot be blank')parser.add_argument('age', type=int, help='Age must be an integer')class UserList(Resource): def post(self): args = parser.parse_args() new_user = {'id': len(users) + 1, 'name': args['name'], 'age': args['age']} users.append(new_user) return new_user, 201总结

利用 Flask-RESTful 扩展,可以显著简化 REST API 的开拓流程。
它供应了类视图、参数解析、缺点处理等功能,使得 API 更加模块化和易于掩护。
如果你的项目须要开拓一个中等繁芜度的 API,Flask-RESTful 是一个非常好的选择。

标签:

相关文章