Java 开发人员应该都知道 Spring REST 和 Spring Boot。但可能并不清楚两者之间有什么具体区别、什么时候应该使用那个。在这篇文章中,我们将深入探讨这些问题!
Spring REST 简介
Spring REST,也被称为 Spring MVC REST,是 Spring Framework 的一部分,可以构建 RESTful Web 服务。这一切都与处理 HTTP 请求和响应有关,它是创建 API 的绝佳工具。
Spring REST 建立在 Spring MVC(模型-视图-控制器)框架之上,用于构建 RESTful Web 服务。它利用 Spring MVC 架构来公开超媒体驱动的 HTTP 资源。
为什么使用 Spring REST?
Spring REST 包含了 Web 的规则,包括架构、优势。它提供了一系列功能,例如合适的操作(GET、POST、PUT、DELETE)、缓存、重定向和转发、安全性(加密和身份验证)。
Spring REST 快速上手
想要快速上手,可以从创建一个简单的工资单服务开始,用于管理公司的员工。将员工对象存储在数据库中,并通过 JPA 访问。
Spring Data REST
Spring Data REST 建立在 Spring Data 项目之上,可以轻松构建连接到 Spring Data 存储库的超媒体驱动的 REST Web 服务。
REST 的高级领域
了解基础知识后,可以深入了解 REST 的更高级领域,例如错误处理、分页、测试和记录 API。
Spring REST 客户端
Spring REST 提供了不同的客户端,包括 RestClient、RestTemplate 和 WebClient。
Spring Boot 简介
Spring Boot 是一个旨在简化 Spring 应用程序的引导和开发的框架,提供了代码和注释配置的默认值,可以立即快速启动新的 Spring 项目。
Spring Boot 是一种工具,使用 Spring Framework 开发 Web 应用程序和微服务变得更快、更容易,是 Spring Java 平台的约定化扩展,旨在帮助在创建基于 Spring 的应用程序时最大限度地减少配置问题。
![Spring Boot 是一个旨在简化 Spring 应用程序的引导和开发的框架](https://apifox.com/apiskills/content/images/2024/06/image-34.png)
为什么使用 Spring Boot?
- 自动配置:Spring Boot 使用预设的依赖项初始化应用程序,因此不必手动配置。
- 独有的的配置方法:Spring Boot 提供了内置的自动配置功能,这些功能会根据你的设置自动配置底层 Spring Framework 和第三方包。
- 独立应用程序:Spring Boot 可以创建能够“运行”的应用程序,它们是独立的,不需要外部服务器。
Spring Boot 快速上手
我们可以从使用 Spring Initializr 创建一个简单的应用程序开始。
要开始使用 Spring Boot,需要确保安装了有效的 Java 版本。可以通过在终端中运行 java -version
来检查。访问 Spring Initializr,填写项目详细信息,选择你的选项,然后将捆绑的项目下载为 zip 文件。
1.启动新的 Spring Boot 项目
在「start.spring.io」建立具有「Web」框架的项目。并在依赖项部分查找合并「Web」项,如下图所示。点击生成按钮,下载 zip 文件,并将其解压缩到本地计算机上的目录中。
![启动新的 Spring Boot 项目](https://apifox.com/apiskills/content/images/2024/06/image-35.png)
2.合并代码
启动 IDE 并导航到位于项目的 src/main/java/com/example/demo
目录中的 DemoApplication.java
文件。通过添加以下代码中描述的其他方法和批注来修改文件的内容。你可以手动输入,也可以复制并粘贴代码。
COPYpackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
这是在 Spring Boot 中建立基本「Hello World」Web 服务所需的基础代码。
我们合并的 hello()
方法是接受名为name
的 String 参数,然后将此参数与代码中的单词 「Hello」合并。所以,如果你在请求中将姓名设置为Amy
,则响应将为Hello Amy
。
@RestController
注解告诉 Spring,这段代码代表这是可通过 Web 访问的端点。@GetMapping("/hello")
告诉 Spring 使用hello()
方法来响应发送到 http://localhost:8080/hello 地址的请求。@RequestParam
告诉 Spring 在请求中有一个name
值,但如果不存在,它将默认为单词World
。
3.测试
现在该构建和执行程序了。
打开命令行或终端,找到包含项目文件的目录,通过执行以下命令来生成和运行应用程序:
- MacOS/Linux: MacOS/Linux 操作系统
COPY./gradlew bootRun
- Windows: 窗户
COPY.\gradlew.bat bootRun
你会看到与以下内容非常相似的输出:
![在 Spring Boot 中建立基本「Hello World」Web 服务所需的基础代码](https://apifox.com/apiskills/content/images/2024/06/image-36.png)
检查 localhost:8080 的服务器状态:
![检查 localhost:8080 的服务器状态](https://apifox.com/apiskills/content/images/2024/06/image-37.png)
Spring Boot 是一个强大的工具,可以加速基于 Spring 的应用程序的开发,降低配置和设置的复杂性。
Spring REST vs Spring Boot
那么,两个有什么区别呢?
Spring REST 专注于提供 RESTful 服务,而 Spring Boot 就是为了让创建 Spring 应用程序变得更加容易。
Spring REST 和 Spring Boot 都是 Spring 生态系统的一部分,可用于创建 Web 应用程序和 RESTful 服务。但是,它们有不同的用途,并且有一些关键区别:
Spring REST
- Spring REST 是 Spring 框架的一部分,支持按照具象状态传输 (REST) 架构模式构建 Web 服务。
- Spring REST适用于想要构建 RESTful 服务并更好地控制配置的情况。
- 当你已经在使用 Spring 生态系统并希望将某些服务方法公开为 RESTful API 时,通常会使用 Spring REST。
Spring Boot
- Spring Boot 是 Spring 框架的扩展,简化了创建独立生产级应用程序的过程。
- Spring Boot 提供了「starter」依赖项,方便依赖项描述,可以将其包含在应用程序中,以及自动配置,根据你添加的 jar 依赖项自动配置 Spring 应用程序的功能。
- 当你想要快速引导新项目或微服务时,Spring Boot 特别有用。
- 当你想要开发一个非阻塞反应式应用程序并且你正在使用 Spring WebFlux 时,是一个不错的选择。
并不是说选了一个就不能用另一个, 其实,你可以同时使用 Spring Boot 和 Spring REST!
使用 Spring REST 或 Spring Boot 的场景
如果你想更好地控制你的配置,能够适应 Spring 的复杂性,构建一个 Web 服务,并且你想处理 HTTP 请求和响应,那么 Spring REST 可能是一个不错的选择。
当然,如果你想以最少的配置快速启动并运行一个新项目,那么 Spring Boot 会更合适。
这两者并不相互排斥,并且经常在同一应用程序中一起使用。例如,你可以使用 Spring Boot 快速设置新应用程序,然后使用 Spring REST 将某些服务方法公开为 RESTful API。
调试 Spring API
Apifox 是一个用于 API 设计、调试、开发、模拟和测试的集成平台,是一整套连接整个 API 生命周期的工具,可帮助研发团队实施 API 设计优先开发的最佳实践。
Apifox 将 Postman、Swagger Editor、Swagger UI、Stoplight、ReadMe、JMeter、SoapUI 和 Mock 的功能组合到一个平台中,让我们可以进行高效的 API 开发,并确保没有不必要的重复任务。它因简化构建和测试 API 的过程而受到全球开发人员的喜爱。
1.创建请求
打开 Apifox 并创建一个新请求。你可以选择「新建接口」,也可以选择「快捷请求」快速进行调试步骤。
![调试 Spring API](https://apifox.com/apiskills/content/images/2024/06/image-38.png)
2.输入 API
手动输入要发出的 POST 请求的 API 详细信息。
![Apifox 将 Postman、Swagger Editor、Swagger UI、Stoplight、ReadMe、JMeter、SoapUI 和 Mock 的功能组合到一个平台](https://apifox.com/apiskills/content/images/2024/06/image-39.png)
3.输入参数
填写所需的参数和要包含在请求正文中的任何数据,使用 Apifox 可以在使用 API 时节省时间和精力。
![手动输入要发出的 POST 请求的 API 详细信息](https://apifox.com/apiskills/content/images/2024/06/image-40.png)
总结
Spring REST 和 Spring Boot 都有自己的优势和用例,甚至可以一起使用,以创建强大而高效的应用程序。因此,当你开始一个新项目时,你可以多多考虑哪种工具适合你,然后使用类似 Apifox 这种 API 工具帮你提升效率。