REST(Representational State Transfer) API,
REST API는 Http의 요청을 통해 통신함으로써 CRUD의 데이터베이스 기능을 수행한다.
쉽게 말해 주소 요청만으로 어떤 작업(CRUD)을 하고 싶은지 알 수 있다.
REST API가 사용하는 Http Request Method로는 get, post, put, patch, delete가 있다.
기존 회원(m_number=5) 상세 조회 주소 (get) : /member/detail?m_number=5
-> REST API 방식의 회원 상세 조회 주소 (get) : /member/5
@Controller
@RequestMapping("/member/*")
@RequiredArgsConstructor // final 붙은 필드로만 생성자를 만들어줌.
public class MemberController {
private final MemberService ms;
// 회원조회 (get, /member/5)
@GetMapping("{memberId}")
public String findById(@PathVariable("memberId") Long memberId, Model model) {
MemberDetailDTO member = ms.findById(memberId);
model.addAttribute("member", member);
return "member/findById";
}
}
기존 회원 삭제 주소 (get) : /member/delete?m_number=5
-> REST API 방식의 회원 삭제 주소 (delete) : /member/5
@Controller
@RequestMapping("/member/*")
@RequiredArgsConstructor
public class MemberController {
private final MemberService ms;
// 회원삭제 (delete, /member/5)
@DeleteMapping("{memberId}")
public ResponseEntity deleteById2(@PathVariable Long memberId) {
ms.deleteById(memberId);
/*
! 단순 화면 출력이 아닌 데이터를 리턴하고자할 때 사용하는 리턴방식
ResponseEntity : 데이터, 상태코드(200, 400, 404, 405, 500 등)를 함께 리턴할 수 있음.
@ResponseBody : 데이터를 리턴할 수 있음.
*/
// 200 코드를 (OK, 요청이 성공적으로 수행되었음) 리턴
return new ResponseEntity(HttpStatus.OK);
}
}
기존 회원 수정 처리 주소 (post) : /member/update?m_number=5
-> REST API 방식의 회원 수정 처리 주소 (put) : /member/5
@Controller
@RequestMapping("/member/*")
@RequiredArgsConstructor
public class MemberController {
private final MemberService ms;
// 수정화면 요청
@GetMapping("update")
public String updateForm(Model model, HttpSession session) {
String memberEmail = (String) session.getAttribute(LOGIN_EMAIL);
MemberDetailDTO member = ms.findByMemberEmail(memberEmail);
model.addAttribute("member", member);
return "member/update";
}
// 수정처리 (put, /member/5)
@PutMapping("{memberId}")
// json 으로 데이터가 전달되면 @RequestBody로 받아줘야함.
public ResponseEntity update(@RequestBody MemberDetailDTO memberDetailDTO) {
Long memberId = ms.update(memberDetailDTO);
return new ResponseEntity(HttpStatus.OK);
}
}