第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不一样。

避坑指南:我曾经在Spring Boot项目里忘了加@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也不晚。
一个小提示:这套课程后续关于加解密的改造逻辑,在Flask和Spring Boot上的实现思路是完全一致的——拦截请求、解密、处理、加密响应。所以你可以任选一个框架跟着走,后面我会同时给出两种代码。

2.6 本章知识脉络图

下面这张图展示了你今天搭好的环境结构:两种框架分别如何启动一个REST服务,以及它们共用的测试思路。

API开发环境搭建 – 核心流程 选择框架 Flask(Python) 安装Flask + 创建app.py 定义路由 + 返回JSON 运行 python app.py Spring Boot(Java) 创建Maven项目 + 配置依赖 @RestController + 路径映射 运行mvn spring-boot:run 测试:curl 或 Postman

这张图把今天的两条路线都串起来了。你看到最后都汇总到同一个测试环节——不管你用什么框架,最终都要用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),很多问题看一眼日志就明白了。