1:简单,简单,就是因为简单
@RestController
@RequestMapping("/user")
public class UserController {
Map<String,User> userDB = Collections.synchronizedMap(new HashMap<String, User>());
@RequestMapping(value="/save", method=RequestMethod.POST, consumes = "application/json")
public void saveUser(@RequestBody List<User> users){
for (User user: users) {
userDB.put(user.getId(),user);
}
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = "application/json")
public User getUserById(@PathVariable("id") String id){
return userDB.get(id);
}
}
通过以上短短几行代码我们已经定义了存储用户和获取用户两个操作,接下来我会给您详细解释。
方法解释
名称 | 描述 |
---|---|
@RequestController | 使用了这个注解的类会被看作一个controller-使用@RequestMapping的方法有一个默认的@ResponseBody注解。 |
@RequestMapping(“/user”) | 处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 |
@RequestMapping 中 value | 对应映射路径 |
@RequestMapping 中 method | 定义了请求方法 |
@RequestMapping 中 consumes | 定义了只接受请求头部 Content-Type 属性,上例中 content-Type=”application/json” |
@RequestMapping 中 produces | 定义了只接受请求头部 Accept 属性,上例中 Accept=”application/json” |
@RequestBody | 将请求内容自动映射成为 Java 对象 |
@PathVariable | 将请求内容自动映射成为基础类型 |
代码解读
定义类路径上拦截URL的中user关联所有请求
@RestController
@RequestMapping("/user")
public class UserController {
定义一个Map对象,模拟数据库存储用户信息。
Map<String,User> userDB = Collections.synchronizedMap(new HashMap<String, User>());
拦截/user/save请求,consumes定义了只接受json类型数据。@RequestBody 会主动将json对象转换为Java对象,以供业务处理。
@RequestMapping(value="/save", method=RequestMethod.POST, consumes = "application/json")
public void saveUser(@RequestBody List<User> users){
for (User user: users) {
userDB.put(user.getId(),user);
}
}