Yuque Archive
寻常的路

使用Spring Boot构建RESTful网络服务

原文地址:https://spring.io/guides/gs/rest-service/

要做什么

将构建一个可以接收GET请求的Web服务:

Web服务会响应返回JSON:

允许在请求路径中使用参数:

相应的,Web服务的响应也会改变:

开发环境

使用IntelliJ IDEA作为开发工具,新建Gradle项目,并构建出这样的目录结构:

编辑build.gradle文件,将下面代码直接复制粘贴,覆盖掉原有内容:

这里使用了Sprint Boot的gradle插件,它提供了很多有用的功能。

编写代码

我们需要接收来自/greeting的GET请求,并且接收name参数,返回不同的响应内容。

先来写Greeting实体类,它包含两个属性idname

src/main/java/hello/Greeting.java

接着是控制器,用于接收请求和参数,并响应:

src/main/java/hello/GreetingController.java

控制器使用了三个注解@RestController@RequestMapping@RequestParam

@RestController声明控制器并返回JSON,是之前版本的@ResponseBodyController的结合。

@RequestMapping允许接收HTTP请求,后面的字符串即为参数,并调用greeting()方法。

@RequestParam为参数String name的注解,value指明使用请求的参数作为值,defalultValue为默认值。

每次接收到来自/greeting的请求,都会执行greeting()方法,方法传入了name参数,方法参数受请求参数控制。没有请求参数则使用默认值。方法返回了Greeting对象,id递增,name为方法参数。程序会自动将对象转变为JSON进行输出。

最后是执行类,用于启动服务:

src/main/java/hello/Application.java

@SpringBootApplication是一个便捷的注解,包含了以下功能:

  • @Configuration标记类为bean。
  • @EnableAutoConfiguration通知Spring Boot开始加载环境变量配置、其它bean和属性配置。
  • Sprint Boot会为Spring MVC应用自动添加@EnableWebMvc
  • @ComponentScan通知Spring寻找hello包中的其它组件、配置、服务、控制器。

这里使用SpringApplication.run()方法启动应用。

测试应用

访问 http://localhost:8080/greeting ,会看到页面有类似这样的输出:

刷新页面,id的值将变为2

访问 http://localhost:8080/greeting?name=smallyu ,页面输出: