
@Controller
public class MemberController {
// /hello 요청 시 resources/templates/hello.html 페이지가
// 응답할 수 있도록 설정하세요.
@GetMapping("/hello")
public String world(@RequestParam (name="name") String name, Model model) {
model.addAttribute("name",name);
return "hello";
}
// /json 요청 시 {"name": "brown", "age": 20}
// 응답할 수 있도록 설정하세요.
@GetMapping("/json")
@ResponseBody
public Person json() {
return new Person("brown", 20);
}
}
world()
json()
@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 ResponseEntity.ok().body(members);
}
@PutMapping("/members/{id}")
public ResponseEntity<Void> update(@RequestBody Member newmember, @PathVariable Long id) {
// TODO: member의 수정 정보와 url 상의 id 정보를 받아 member 정보를 수정한다.
Member member = members.stream()
.filter(it -> Objects.equals(it.getId(), id))
.findFirst()
.orElseThrow(RuntimeException::new);
member.update(newmember);
return ResponseEntity.ok().build();
}
@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 ResponseEntity.noContent().build();
}
}