작성
·
936
3
회원정보수정할 때 "patch를 사용할까?"라는 궁금증이 생겨서 질문하게 되었습니다.
왜냐하면 회원정보 수정시 patch개념을 이용하여 수정하게 되면
서버 로직에서 유저 정보 데이터 유무에 따라 분기하여
db에 update하게 되어 중복되는 코드가 많아진다고 생각했습니다.
// 회원정보수정 API에서 nickname, email 바디값을 받는다고 했을 때
// 아래 코드와 같이 구현해야한다고 생각했습니다.
if(nickname){
update user set nickname = 'inflearn' where id = 1
} else if (email){
update user set email = 'inflearn@gmail.com' where id = 1
}
// 왜냐하면 만약에 회원정보수정 API에서 클라이언트에서 nickname은 보내고 email은 안보내는 상황에
// if문같은 분기가 없으면 아래 코드와 같이 email에 null값이 들어갈 것으로 예상되었기 때문입니다.
update user set nickname = 'inflearn', email = null where id =1
그래서 저같은 경우는 회원정보수정API는 put메서드를 사용하고 유저정보를 다 보내도록 했습니다.
그리고 회원정보수정API에 모든 회원정보 데이터를 보내도록 하고
아래 코드와 같이 회원정보수정API 로직이 시작하는 부분에 모든 예외상황을 생각해서
바디값이 왔는지 유무를 체크하여 예외처리하는 식으로 구현했습니다.
if (!profile_nickname) return res.status(400).json({ code: 'invalid_profile_nickname' })
그러다보니 클라이언트에서는 회원정보 수정데이터가 10개중에 하나만 바뀌어도 모든 데이터를 회원정보수정API에 보내는 비효율적인 문제가 생기더라고요.
저도 제가 구현한 방식이 비효율적인 걸 알고 있는데 어떻게 구현하는게 맞는지 생각이 나지않아 질문하게 되었습니다.
어떻게 하면 patch를 잘 이용할 수 있을까요?
현재 저 같은 경우는 수정과 관련된 API이면 put만 사용하고
예외적으로 patch를 사용하는 경우는 비밀번호 변경일 때만 사용했는데요.
왜냐하면 user테이블의 비밀번호 부분만 변경을 하는거니까 patch를 사용하는게 맞다고 생각했습니다.