第2章:API开发环境搭建——用Flask和Spring Boot快速搭起第一个REST接口
好,咱们进入实战环节。上一章聊了加解密的整体思路,这一章先把地基打牢——搭建API开发环境。
你可能在想:“我该用Python还是Java?” 我的建议是:跟着你的项目走。如果团队主栈是Python,就用Flask;如果Java生态更成熟,就用Spring Boot。两者都能做出安全可靠的REST API,我这些年两个都用过,踩过的坑也不少。
2.1 环境准备:先把工具箱摆好
不管选哪个框架,依赖都得装到位。我通常会在机器上建一个干净的虚拟环境,避免污染全局。
Python环境(选Flask)
- Python 3.8+(建议3.10或3.12)
- pip 或 poetry 管理包
- Flask 3.x
Java环境(选Spring Boot)
- JDK 17(LTS,我现在都用它)
- Maven 或 Gradle
- Spring Boot 3.x
- IDE:IntelliJ IDEA(免费社区版够用)
requirements.txt(Python)或 pom.xml(Java),版本锁死,队友拉下来就能跑,不会出现“在我机器上好好的”这种鬼故事。
2.2 Flask篇:5分钟起一个REST服务
Flask轻量,特别适合原型验证。来,直接上代码。
新建 app.py,写入以下内容:
from flask import Flask, jsonify, request
app = Flask(__name__)
# 一个简单的GET接口
@app.route('/api/hello', methods=['GET'])
def hello():
return jsonify({"message": "Hello, REST!"})
# 带路径参数的GET接口
@app.route('/api/user/<int:user_id>', methods=['GET'])
def get_user(user_id):
return jsonify({"user_id": user_id, "name": "Alice"})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
命令行运行:
python app.py
然后访问 http://localhost:5000/api/hello,你会看到返回的JSON。是不是很简单?
我曾经在一个小项目里用Flask给前端提供了十几个接口,前后端联调非常顺畅。但要注意:Flask默认的服务器是单线程的,上线前一定得换WSGI容器(比如Gunicorn),否则并发一上来就挂了。
2.3 Spring Boot篇:同样快速,但更“重”一些
如果你在Java生态里,Spring Boot是标配。我用IDEA的Spring Initializr生成项目,也可以直接手写。
新建一个Spring Boot项目(用Maven),核心依赖就两个:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
然后写一个Controller:
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public Map<String, String> hello() {
return Map.of("message", "Hello, REST!");
}
@GetMapping("/user/{userId}")
public Map<String, Object> getUser(@PathVariable int userId) {
return Map.of("user_id", userId, "name", "Bob");
}
}
启动类:
@SpringBootApplication
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
运行后访问 http://localhost:8080/api/hello。注意默认端口是8080,跟Flask的5000不一样。
@RestController,结果返回的是404页面而不是JSON。还有一次配置文件里没加server.port=8080,跟同事的端口冲突了,调了半天才发现。所以启动后第一件事——确认端口,用curl敲一下。
2.4 两种框架的对比:一张表看清
| 特性 | Flask | Spring Boot |
|---|---|---|
| 语言 | Python | Java/Kotlin |
| 项目启动时间 | 秒级 | 5-10秒(首次需编译) |
| 默认端口 | 5000 | 8080 |
| 内置容器 | Werkzeug(开发用) | Tomcat(生产级) |
| 配置方式 | 代码里写,或环境变量 | application.yml / properties |
| 典型场景 | 微服务、原型、小团队 | 企业级、大型系统 |
2.5 框架选择的心法:别纠结,先跑起来
说实话,我遇到不少新手在“用哪个框架”上犹豫半天。我的建议是:先选你最熟悉的语言。如果两个都不熟,那就按项目场景来定——
- 要做快速原型、验证想法?Flask,快得飞起。
- 要写复杂的业务逻辑、对接公司现有Java体系?Spring Boot,成熟稳定。
- 两边都不熟?那就从Flask开始,学完再补Spring Boot也不晚。
2.6 本章知识脉络图
下面这张图展示了你今天搭好的环境结构:两种框架分别如何启动一个REST服务,以及它们共用的测试思路。
这张图把今天的两条路线都串起来了。你看到最后都汇总到同一个测试环节——不管你用什么框架,最终都要用curl或者Postman验证接口是否正常工作。我个人习惯在终端里直接用curl,因为快,还能顺便练练命令行。
2.7 测试你的第一个API
启动服务后,打开终端,输入:
# Flask(端口5000)
curl http://localhost:5000/api/hello
# Spring Boot(端口8080)
curl http://localhost:8080/api/hello
如果返回了 {"message":"Hello, REST!"},恭喜你,环境搭建成功!
/api/helloo),看看返回的404是什么格式。这在后面加解密统一处理错误时很有用——你得清楚框架默认的错误响应长什么样。
2.8 本章小结
嗯,今天我们就干了三件事:装环境、写代码、测接口。Flask和Spring Boot各跑一遍,你就能体会到它们的“手感”差异。下一章开始,我们会在这些接口上注入加解密逻辑——到时候你会发现,只要今天的基础打牢了,后面的改造就像给汽车换个轮胎一样直接。
对了,如果你在搭建中遇到问题,别急着翻文档——先把环境变量的打印打开(Flask的debug=True,Spring Boot的logging.level.root=DEBUG),很多问题看一眼日志就明白了。