每个 Java 软件架构师都应该知道的 20 件事
如何使用 Python Flask 构建 API
Python Flask 是一个流行的框架,广泛用于构建 Web 应用程序和 API。它为开发人员提供了一种快速、简单的方法来创建可供其他软件应用程序使用的 RESTful API。Flask 的轻量级特性和最低限度的设置要求,使其成为构建中小型 API 的绝佳选择。这使得 Flask 成为希望用 Python 构建健壮且可扩展的 API 的开发者的理想选择。以下示例将介绍如何创建一个简单的 Flask REST API 教程。
先决条件
在开始之前,需要确保满足以下先决条件:
- 安装 Python
- 配置一个用于编辑代码的 IDE
- 安装 Postman 以便测试 API 端点
当这些先决条件都准备就绪后,就可以开始进行教程了!
创建基础项目
首先,在选择的目录中创建一个名为 python-flask-api
的文件夹。
创建新文件夹后,在该文件夹的根目录打开终端,以便执行命令来构建和运行 Python 项目。将终端指向项目的根目录后,运行以下命令以初始化 Python Rest API Flask 项目并管理依赖项。
首先,使用 pip
在项目目录中安装 Flask。为此,运行以下命令:
pip install Flask
编写代码
在 app.py
文件的第一行代码中,导入 json
、Flask
、jsonify
和 request
模块:
import json
from flask import Flask, jsonify, request
接下来,通过在导入语句下方添加以下代码来创建一个新的 Flask 应用程序:
app = Flask(__name__)
为了给 API 提供一些可用的数据,定义一个包含 ID 和名称的员工对象数组:
employees = [
{ 'id': 1, 'name': 'Ashley' },
{ 'id': 2, 'name': 'Kate' },
{ 'id': 3, 'name': 'Joe' }
]
接着,定义 GET 请求到 /employees
端点的路由,以 JSON 格式返回所有员工:
@app.route('/employees', methods=['GET'])
def get_employees():
return jsonify(employees)
除了 GET 方法外,还将定义 POST、PUT 和 DELETE 方法的路由,这些函数用于创建新员工以及根据给定的 ID 更新或删除员工:
@app.route('/employees', methods=['POST'])
def create_employee():
global nextEmployeeId
employee = json.loads(request.data)
if not employee_is_valid(employee):
return jsonify({ 'error': 'Invalid employee properties.' }), 400
employee['id'] = nextEmployeeId
nextEmployeeId += 1
employees.append(employee)
return '', 201, { 'location': f'/employees/{employee["id"]}' }
@app.route('/employees/<int:id>', methods=['PUT'])
def update_employee(id: int):
employee = get_employee(id)
if employee is None:
return jsonify({ 'error': 'Employee does not exist.' }), 404
updated_employee = json.loads(request.data)
if not employee_is_valid(updated_employee):
return jsonify({ 'error': 'Invalid employee properties.' }), 400
employee.update(updated_employee)
return jsonify(employee)
@app.route('/employees/<int:id>', methods=['DELETE'])
def delete_employee(id: int):
global employees
employee = get_employee(id)
if employee is None:
return jsonify({ 'error': 'Employee does not exist.' }), 404
employees = [e for e in employees if e['id'] != id]
return jsonify(employee), 200
一旦代码完成,最终的 app.py
文件应如下所示:
import json
from flask import Flask, jsonify, request
app = Flask(__name__)
employees = [
{ 'id': 1, 'name': 'Ashley' },
{ 'id': 2, 'name': 'Kate' },
{ 'id': 3, 'name': 'Joe' }
]
nextEmployeeId = 4
@app.route('/employees', methods=['GET'])
def get_employees():
return jsonify(employees)
@app.route('/employees/<int:id>', methods=['GET'])
def get_employee_by_id(id: int):
employee = get_employee(id)
if employee is None:
return jsonify({ 'error': 'Employee does not exist' }), 404
return jsonify(employee)
def get_employee(id):
return next((e for e in employees if e['id'] == id), None)
def employee_is_valid(employee):
for key in employee.keys():
if key != 'name':
return False
return True
@app.route('/employees', methods=['POST'])
def create_employee():
global nextEmployeeId
employee = json.loads(request.data)
if not employee_is_valid(employee):
return jsonify({ 'error': 'Invalid employee properties.' }), 400
employee['id'] = nextEmployeeId
nextEmployeeId += 1
employees.append(employee)
return '', 201, { 'location': f'/employees/{employee["id"]}' }
@app.route('/employees/<int:id>', methods=['PUT'])
def update_employee(id: int):
employee = get_employee(id)
if employee is None:
return jsonify({ 'error': 'Employee does not exist.' }), 404
updated_employee = json.loads(request.data)
if not employee_is_valid(updated_employee):
return jsonify({ 'error': 'Invalid employee properties.' }), 400
employee.update(updated_employee)
return jsonify(employee)
@app.route('/employees/<int:id>', methods=['DELETE'])
def delete_employee(id: int):
global employees
employee = get_employee(id)
if employee is None:
return jsonify({ 'error': 'Employee does not exist.' }), 404
employees = [e for e in employees if e['id'] != id]
return jsonify(employee), 200
if __name__ == '__main__':
app.run(port=5000)
最后,添加一行代码以运行 Flask 应用程序,调用 run
方法并使 Flask 应用程序在端口 5000 上运行:
if __name__ == '__main__':
app.run(port=5000)
运行和测试代码
编写并保存代码后,可以启动应用程序。在终端中执行以下命令来运行 Flask 应用:
python app.py
现在,API 已启动并运行。您可以通过 Postman 发送测试 HTTP 请求,向 http://localhost:5000/employees
发送 GET 请求。请求发送后,您应该在响应中看到 200 OK 状态代码以及返回的员工数组。
对于此测试,传入请求不需要请求正文。您可以在 Postman 中查看响应,确保 API 正常工作。
总结
通过上述步骤,成功使用 Python 创建了一个简单的 RESTful API Flask。可以根据需要扩展此代码,为应用程序构建更复杂的 API,满足具体需求。