使用 Spring 创建 RESTful Web 服务,实现Hello World
的 RESTful 请求
什么是 RESTful
RESTful 是应用程序接口的一种架构风格,它使用 HTTP 请求来访问和使用数据。请求方式包含 GET、PUT、POST 和 DELETE 类型,这些类型是指有关资源操作的读取、更新、创建和删除。
RESTful 协议定义 HTTP 方法如下:
- GET 检索资源
- PUT 更新资源
- POST 创建资源
- DELETE 删除资源
开发工具
- IDEA: 2021.1.2
- Java: 1.8
- Spring Boot: 2.5
创建项目
New Project
打开 IDEA 创建新项目 New Project,使用 start.spring.io 快速构建
添加依赖
添加 Spring Web 依赖,finish 创建项目
pom.xml
中手动管理依赖模块
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
编写项目
创建数据对象
/*
* Copyright (c) 2021 iChochy
* URL:https://ichochy.com
* Date:2021/06/17 11:40:17
*/
package com.ichochy.example.restful;
public class Greeting {
private Long id;
private String content;
/**
* 用参的构造方法
* @param id
* @param content
*/
public Greeting(Long id, String content) {
this.id = id;
this.content = content;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
创建控制器
/*
* Copyright (c) 2021 iChochy
* URL:https://ichochy.com
* Date:2021/06/17 11:44:17
*/
package com.ichochy.example.restful;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.atomic.AtomicLong;
@RestController
public class RESTFulController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
- @RestController 注释,它将类标记为控制器,其中每个方法返回的是对象而不是视图。
- 它是同时包含@Controller和@ResponseBody
- @GetMapping 注释,定义
/greeting
为HTTP GET
请求 - @RequestParam 注释,定义参数(
name
)为请求参数,默认值为 “World
”
项目目录
├── pom.xml
└── src
└── main
└── java
└── com
└── ichochy
└── example
├── ExampleApplication.java
└── restful
├── Greeting.java
└── RESTFulController.java
运行项目
Dubug 运行项目
main
方法启动项目
/*
* Copyright (c) 2021 iChochy
* URL:https://ichochy.com
* Date:2021/06/09 22:07:09
*/
package com.ichochy.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
服务默认端口号为8080
访问测试
访问:http://localhost:8080/greeting
{"id":1,"content":"Hello, World!"}
访问:http://localhost:8080/greeting?name=iChochy
{"id":2,"content":"Hello, iChochy!"}
总结
- 通过 Spring 可以快速创建 RESTful 请求服务,实现服务接口统一。
- 其它请求方式可以通过 @RequestMapping 注释中的 method 参数指定,如
@RequestMapping(method=GET)
。 - 默认情况使用
Jackson
JSON库自动将类型实例编组为 JSON
GitHub
https://github.com/iChochy/Example
引用
- Jackson:https://github.com/FasterXML/jackson
- Spring rest service:https://spring.io/guides/gs/rest-service/