REST API를 이용한 회원 상세 조회, 삭제, 수정

naryun·2022년 1월 11일
1
post-thumbnail

*REST API란?

REST(Representational State Transfer) API,
REST API는 Http의 요청을 통해 통신함으로써 CRUD의 데이터베이스 기능을 수행한다.
쉽게 말해 주소 요청만으로 어떤 작업(CRUD)을 하고 싶은지 알 수 있다.
REST API가 사용하는 Http Request Method로는 get, post, put, patch, delete가 있다.

*RESTful한 '회원 상세 조회'

기존 회원(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";
    }
 }

*RESTful한 '회원 삭제'

기존 회원 삭제 주소 (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);
    }
}

*RESTful한 '회원 수정'

기존 회원 수정 처리 주소 (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);
    } 
}
profile
꾸준히

0개의 댓글