0%

REST

REST

特点

输入输出都是JSON的API接口

作用

便于第三方调用

便于使用js进行交互

编写RestController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package eternal.fire;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api")
public class ApiController {
@Autowired
UserService userService;

@GetMapping("/users")
public List<User> users() {
return userService.getUsers();
}

@GetMapping("/users/{id}")
public User user(@PathVariable("id") long id) {
return userService.getUserById(id);
}

@PostMapping("/signin")
public Map<String, Object> signin(@RequestBody SignInRequest signInRequest) {
try {
User user = userService.signin(signInRequest.email, signInRequest.password);
return Map.of("user", user);
} catch (Exception e) {
return Map.of("error", "SIGNIN_FAILED", "message", e.getMessage());
}
}

public static class SignInRequest{
public String email;
public String password;
}

}

精细化控制

防止密码明文输出

1
2
3
4
5
6
@JsonProperty(access = Access.WRITE_ONLY)
public String getPassword() {
return password;
}