使用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实体类,它包含两个属性id和name:
src/main/java/hello/Greeting.java
接着是控制器,用于接收请求和参数,并响应:
src/main/java/hello/GreetingController.java
控制器使用了三个注解@RestController、@RequestMapping和@RequestParam。
@RestController声明控制器并返回JSON,是之前版本的@ResponseBody和Controller的结合。
@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。