Flask RESTful API简单应用
- 处理请求参数
- 在 RESTful API 中,客户端通常需要向服务器传递一些参数,比如查询条件、请求体等。在 Flask 中,可以使用 request 对象来访问这些参数:
- user = {'id': request.json['id'], 'name': request.json['name'], 'age': request.json['age']}
- 这里的 request.json 表示请求体中的 JSON 数据。如果请求体不是 JSON 格式,可以使用 request.form 或 request.args 来获取表单数据或查询参数。
- 返回 JSON 数据
- 在 RESTful API 中,通常需要返回 JSON 格式的数据。在 Flask 中,可以使用 jsonify 函数来将 Python 对象转换为 JSON 格式的数据:
- return jsonify(users)
- 这里的 users 是一个 Python 列表对象,jsonify(users) 将它转换为 JSON 格式的数据,并返回给客户端。
from flask import Flask, jsonify, request
app = Flask(__name__)
# 用户数据(模拟数据库)
users = [
{"id": 1, "name": "Alice", "age": 20},
{"id": 2, "name": "Bob", "age": 25},
{"id": 3, "name": "Charlie", "age": 30},
]
# 获取所有用户信息
@app.route('/users', methods=['GET'])
def get_users():
return jsonify(users)
# 获取指定用户信息
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = next((user for user in users if user['id'] == user_id), None)
if user:
return jsonify(user)
else:
return jsonify({'error': 'User not found'})
# 添加用户
@app.route('/users', methods=['POST'])
def add_user():
user = {'id': request.json['id'], 'name': request.json['name'], 'age': request.json['age']}
users.append(user)
return jsonify(user)
# 修改用户信息
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
user = next((user for user in users if user['id'] == user_id), None)
if user:
user['name'] = request.json.get('name', user['name'])
user['age'] = request.json.get('age', user['age'])
return jsonify(user)
else:
return jsonify({'error': 'User not found'})
# 删除用户
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
user = next((user for user in users if user['id'] == user_id), None)
if user:
users.remove(user)
return jsonify({'result': True})
else:
return jsonify({'error': 'User not found'})
if __name__ == '__main__':
app.run()
* Serving Flask app '__main__'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [13/May/2024 17:47:52] "GET /users HTTP/1.1" 200 -
127.0.0.1 - - [13/May/2024 17:48:18] "GET /users/1 HTTP/1.1" 200 -
127.0.0.1 - - [13/May/2024 17:48:58] "POST /users HTTP/1.1" 200 -
127.0.0.1 - - [13/May/2024 17:49:04] "GET /users HTTP/1.1" 200 -
# 测试
# 获取所有用户信息
curl http://localhost:5000/users
# 获取指定用户信息
curl http://localhost:5000/users/1
# 添加用户
curl -H "Content-Type: application/json" -X POST -d "{\"id\": 4, \"name\": \"David\", \"age\": 35}" http://localhost:5000/users
# 修改用户信息
curl -H "Content-Type: application/json" -X PUT -d "{\"name\": \"Alice Smith\", \"age\": 22}" http://localhost:5000/users/1
# 删除用户
curl -X DELETE http://localhost:5000/users/4