正如第二章所介绍,我们这次项目主要是要做一个前后端分离的项目,前端和后端之间是通过RESTful API进行数据交互。RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离。RESTful API充分利用了Http现有方法来对应4种行为:get(获取),post(新增),put(修改)和delete(删除) eg. get /users:列出所有用户
get /users/id:根据id获取用户
post /user:新增用户
put /user/id:根据用户id更新用户
delete /user/id:根据用户id删除用户
用户登录验证,api为LoginController,该接口做一些基本的验证工作:
@Controller public class LoginController { @Autowired UserManagerService userManagerService; @CrossOrigin @PostMapping(value = "api/login") @ResponseBody public int login(@RequestBody User user){ String username=user.getName(); username= HtmlUtils.htmlEscape(username); if(userManagerService.IsExitedUser(username)){ User user1=userManagerService.getUserById(userManagerService.getUserId(username)); if (Objects.equals(user1.getPasswd(),user.getPasswd())){ return 200; }else{ return 400; } }else { return 400; } } }注: @CrossOrigin表示该方法可以实现跨域请求,也可以放到类上面表示所有方法都可跨域。
GET 请求:@GetMapping(“users”) 等价于@RequestMapping(value="/users",method=RequestMethod.GET)
POST 请求:@PostMapping(“users”) 等价于@RequestMapping(value="/users",method=RequestMethod.POST)
PUT 请求:@PutMapping("/users/{userId}") 等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)
DELETE 请求:@DeleteMapping("/users/{userId}")等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)
@RequestBody用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。
@ResponseBody的作用其实是将java对象转为json格式的数据。