spring-boot实战04:Spring Boot构建RESTful API

Posted 喻聪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-boot实战04:Spring Boot构建RESTful API相关的知识,希望对你有一定的参考价值。

@Controller:修饰class,用来创建处理http请求的对象
@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。
@RequestMapping:配置url映射

下面我们尝试使用Spring MVC来实现一组对User对象操作的RESTful API,配合注释详细说明在Spring MVC中如何映射HTTP请求、如何传参。

 

RESTful API具体设计如下:

 

 

直接粘代码了:

 1 package com.yucong.yucongdemo.controller;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.HashMap;
 6 import java.util.List;
 7 import java.util.Map;
 8 
 9 import org.springframework.web.bind.annotation.ModelAttribute;
10 import org.springframework.web.bind.annotation.PathVariable;
11 import org.springframework.web.bind.annotation.RequestMapping;
12 import org.springframework.web.bind.annotation.RequestMethod;
13 import org.springframework.web.bind.annotation.RestController;
14 
15 import com.yucong.yucongdemo.domain.User;
16 
17 @RestController 
18 @RequestMapping(value="/users")     // 通过这里配置使下面的映射都在/users下 
19 public class UserController { 
20  
21     // 创建线程安全的Map 
22     static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>()); 
23  
24     @RequestMapping(value="/", method=RequestMethod.GET) 
25     public List<User> getUserList() { 
26         // 处理"/users/"的GET请求,用来获取用户列表 
27         // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 
28         List<User> r = new ArrayList<User>(users.values()); 
29         return r; 
30     } 
31  
32     @RequestMapping(value="/", method=RequestMethod.POST) 
33     public String postUser(@ModelAttribute User user) { 
34         // 处理"/users/"的POST请求,用来创建User 
35         // 除了@ModelAttribute绑定参数之外,还可以通过@RequestParam从页面中传递参数 
36         users.put(user.getId(), user); 
37         return "success"; 
38     } 
39  
40     @RequestMapping(value="/{id}", method=RequestMethod.GET) 
41     public User getUser(@PathVariable Long id) { 
42         // 处理"/users/{id}"的GET请求,用来获取url中id值的User信息 
43         // url中的id可通过@PathVariable绑定到函数的参数中 
44         return users.get(id); 
45     } 
46  
47     @RequestMapping(value="/{id}", method=RequestMethod.PUT) 
48     public String putUser(@PathVariable Long id, @ModelAttribute User user) { 
49         // 处理"/users/{id}"的PUT请求,用来更新User信息 
50         User u = users.get(id); 
51         u.setName(user.getName()); 
52         u.setAge(user.getAge()); 
53         users.put(id, u); 
54         return "success"; 
55     } 
56  
57     @RequestMapping(value="/{id}", method=RequestMethod.DELETE) 
58     public String deleteUser(@PathVariable Long id) { 
59         // 处理"/users/{id}"的DELETE请求,用来删除User 
60         users.remove(id); 
61         return "success"; 
62     } 
63  
64 }

 

以上是关于spring-boot实战04:Spring Boot构建RESTful API的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot 使用啥版本的 Jackson?

使用 spring-boot 存储库返回单个属性

spring boot 实战 / mvn spring-boot:run 参数详解

spring-boot 应用程序的外部配置

从 spring-boot:run 获取命令行参数

spring-boot实战08:Spring Boot属性配置文件详解