如何使用 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,满足具体需求。
原文链接:How To Build an API With Python Flask
Keyword: 翻译api