在现代Web开发中,前后端分离的架构越来越常见,而RESTful API正是前后端数据交互的核心桥梁。简单来说,RESTful API就是通过HTTP协议,按照REST(表述性状态传递)风格设计的接口,用于在客户端和服务器之间传输数据。本文将从基础概念讲起,用Flask框架带大家实现一个简单的GET数据接口,适合编程入门者快速上手。

一、什么是RESTful API?

RESTful API是一种软件架构风格,用于创建可扩展、可维护的Web服务。它的核心特点包括:
- 资源为中心:接口围绕“资源”(如用户、商品、订单)设计,每个资源有唯一的URL标识(例如/users代表用户资源)。
- HTTP方法明确:使用标准HTTP方法(GET、POST、PUT、DELETE)表示对资源的操作:
- GET:获取资源(如查询用户列表)。
- POST:创建资源(如新增用户)。
- PUT:更新资源(如修改用户信息)。
- DELETE:删除资源(如删除用户)。
- 无状态:服务器不保存客户端的状态信息,每次请求都独立完整。
- 返回JSON格式:通常返回JSON数据,便于客户端解析。

二、为什么选择Flask?

Flask是一个轻量级的Python Web框架,它:
- 简单灵活:学习曲线平缓,适合初学者快速上手。
- 扩展性强:基础功能简洁,可通过插件扩展(如数据库连接、身份验证)。
- 代码量少:无需复杂配置,几行代码就能实现一个基础接口。

三、安装Flask

使用Python的包管理工具pip安装Flask:

pip install flask

如果需要虚拟环境隔离依赖,可先创建虚拟环境(可选):

python -m venv myenv  # 创建虚拟环境
source myenv/bin/activate  # Windows下为myenv\Scripts\activate
pip install flask

四、实现第一个GET接口

我们将分两步实现:先做一个简单的“问候”接口,再做一个“获取用户列表”的实用接口。

1. 简单问候接口

目标:访问/路径时,返回“Hello, Flask!”。

代码示例

from flask import Flask

# 初始化Flask应用
app = Flask(__name__)

# 定义路由:访问/路径时,执行hello函数
@app.route('/')
def hello():
    return "Hello, Flask!"  # 返回字符串

# 运行应用
if __name__ == '__main__':
    app.run(debug=True)  # debug=True:开发模式,自动重载代码

关键解释
- app = Flask(__name__):创建Flask应用实例,__name__是Python的内置变量,表示当前模块名,用于定位资源路径。
- @app.route('/'):路由装饰器,定义访问路径为/,当用户访问该路径时,执行下方的hello函数。
- return "Hello, Flask!":函数返回字符串,Flask会自动将其转换为HTTP响应体。
- app.run(debug=True):启动Web服务器,debug=True让开发更便捷(代码修改后自动重启,错误信息更详细)。

2. 进阶:返回JSON数据的用户列表接口

目标:访问/users路径,返回一个包含用户信息的JSON数组。

代码示例

from flask import Flask, jsonify  # 导入jsonify用于返回JSON

app = Flask(__name__)

# 模拟数据库数据(实际项目中需从数据库读取)
users = [
    {"id": 1, "name": "Alice", "age": 25, "email": "alice@example.com"},
    {"id": 2, "name": "Bob", "age": 30, "email": "bob@example.com"},
    {"id": 3, "name": "Charlie", "age": 28, "email": "charlie@example.com"}
]

# 定义GET接口:/users
@app.route('/users', methods=['GET'])  # methods指定允许的HTTP方法,默认仅GET
def get_users():
    return jsonify(users)  # jsonify自动将列表转为JSON格式,并设置Content-Type为application/json

if __name__ == '__main__':
    app.run(debug=True, port=5000)  # port=5000:指定端口(默认5000,可自定义)

关键解释
- jsonify(users):将Python列表users转换为JSON格式的响应体,同时设置HTTP响应头Content-Type: application/json,避免客户端解析错误。
- methods=['GET']:明确接口只接受GET请求(默认也仅支持GET,此处显式声明更清晰)。

五、运行与测试接口

1. 启动应用

在代码文件(如app.py)所在目录执行:

python app.py

控制台输出类似:

 * Serving Flask app 'app'
 * Debug mode: on
 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

表示应用已在本地5000端口启动。

2. 测试接口

  • 浏览器访问:打开浏览器,输入http://localhost:5000/users,将看到返回的用户列表JSON数据。
  • 命令行测试:使用curl命令:
  curl http://localhost:5000/users
  • Postman测试:打开Postman,选择GET方法,输入http://localhost:5000/users,点击发送即可查看结果。

六、总结

通过本文,你已经掌握了用Flask实现简单GET接口的核心步骤:
1. 导入Flaskjsonify(如需返回JSON)。
2. 初始化Flask应用。
3. 用@app.route定义路由和HTTP方法。
4. 编写函数返回数据(字符串或JSON)。
5. 用app.run()启动服务。

后续可以尝试扩展:
- 添加更多路由(如/users/<user_id>获取单个用户)。
- 结合数据库(如用SQLAlchemy连接MySQL/PostgreSQL)。
- 实现其他HTTP方法(如POST创建用户)。

Flask的灵活性让你能快速从入门到进阶,祝大家在Web开发的道路上越走越远!

小夜