forked from cho-log/spring-learning-test
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMemberController.java
More file actions
59 lines (48 loc) · 2.05 KB
/
MemberController.java
File metadata and controls
59 lines (48 loc) · 2.05 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package cholog;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class MemberController {
private final List<Member> members = new ArrayList<>();
private final AtomicLong index = new AtomicLong(1);
@PostMapping("/members")
public ResponseEntity<Void> create(@RequestBody Member member) {
// TODO: member 정보를 받아서 생성한다.
Member newMember = Member.toEntity(member, index.getAndIncrement());
members.add(newMember);
return ResponseEntity.created(URI.create("/members/" + newMember.getId())).build();
}
@GetMapping("/members")
public ResponseEntity<List<Member>> read() {
// TODO: 저장된 모든 member 정보를 반환한다.
return new ResponseEntity<>(members, HttpStatus.OK);
}
@PutMapping("/members/{id}")
public ResponseEntity<Void> update(@PathVariable Long id, @RequestBody Member newMember) {
// TODO: member의 수정 정보와 url 상의 id 정보를 받아 member 정보를 수정한다.
Member member = members.stream()
.filter(it -> Objects.equals(it.getId(), id))
.findFirst()
.orElseThrow(RuntimeException::new);
member.update(newMember);
//return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); 이건 왜 안되는지?
return null;
}
@DeleteMapping("/members/{id}")
public ResponseEntity<Void> delete(@PathVariable Long id) {
// TODO: url 상의 id 정보를 받아 member를 삭제한다.
Member member = members.stream()
.filter(it -> Objects.equals(it.getId(), id))
.findFirst()
.orElseThrow(RuntimeException::new);
members.remove(member);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}