一、RESTful简介
REST(Representational State Transfer)表象化状态转变(表述性状态转变),在2000年被提出,基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。
RESTful是一种常见的REST应用,是遵循REST风格的web服务,REST式的web服务是一种ROA(面向资源的架构)。
RESTful资源操作
http方法 | 资源操作 | 幂等 | 安全 |
---|---|---|---|
GET | SELECT | 是 | 是 |
POST | INSERT | 否 | 否 |
PUT | UPDATE | 是 | 否 |
DELETE | DELETE | 是 | 否 |
幂等性:对同一REST接口的多次访问,得到的资源状态是相同的。
安全性:对该REST接口访问,不会使服务器端资源的状态发生改变。
传统URL请求格式:
http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据
http://127.0.0.1/user/save POST 新增用户
http://127.0.0.1/user/update POST 修改用户信息
http://127.0.0.1/user/delete GET/POST 删除用户信息
RESTful请求格式:
http://127.0.0.1/user/1 GET 根据用户id查询用户数据
http://127.0.0.1/user POST 新增用户
http://127.0.0.1/user PUT 修改用户信息
http://127.0.0.1/user DELETE 删除用户信息
二、 Json 数据交互
- 添加依赖
<!--添加jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
- 日期格式处理
实体字段上添加注解:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
三、方法示例
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
/**
* 添加
*
* @param user
* @return
*/
@PostMapping
public String addUser(@RequestBody User user) {
log.info(user.getUsername());
return "ok";
}
/**
* 修改
*/
@PutMapping
public String update(@RequestBody User user) {
log.info(user.getId().toString());
log.info(user.getUsername());
return "ok";
}
/**
* 查询
*
* @return
*/
@GetMapping
public List<User> select() {
List<User> list = new ArrayList<>();
User user0 = new User();
user0.setId(1L);
user0.setPassword("123456");
user0.setUsername("张三");
User user1 = new User();
user1.setId(2L);
user1.setPassword("000000");
user1.setUsername("李四");
list.add(user0);
list.add(user1);
return list;
}
@GetMapping("{id}")
public User getById(@PathVariable("id") Long id) {
User user = new User();
user.setId(id);
user.setPassword("123456");
user.setUsername("张三");
return user;
}
/**
* 删除
* @param id
* @return
*/
@DeleteMapping("{id}")
public String deleteById(@PathVariable("id") Long id){
return "ok";
}
/**
* 批量删除
* @param ids
* @return
*/
@DeleteMapping
public String batch(@RequestBody List<Long> ids){
log.info(JSONArray.toJSONString(ids));
return "ok";
}
}
具体规范参见:
SpringBoot--实战开发--Restful(三十三)