묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
PUT, PATCH method 관련 질문
HTTP method 중 put과 patch에 대해서 공부하고 아 그렇구나~ 하는 와중 갑자기 뜬금없는 질문이 떠올라서 질문드립니다. put은 내용 전체를 덮어쓰는 method이고 patch는 일부만 수정이 가능한 method 라고 배웠는데, 이것도 결국 http request를 backend상에서 어떻게 처리를 하느냐에 따라 달라지는 것 아닌가요? patch request를 받았다고 한들 backend단에서 데이터를 지우고 덮어쓰는 로직을 작성하면 put method와 같은 동작이 되는 것 아닌가요..? 그냥 backend 로직 구현은 염두하지 않고 그냥 그렇게 사용하기로 약속을 한 것인지 궁금합니다. 이상한 질문일수도 있지만 갑자기 문득 생각나서 질문 올려봅니다. 감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
PUT, PATCH 리소스에 대해서
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요.수업을 듣다가 PUT과 PATCH에서 리소스 판단 기준이 헷갈려서 질문드립니다.만약 user 테이블이 있고 테이블에 컬럼이 user_id, user_name, user_pw, user_nickname 이 있습니다.그리고 form 태그를 통해서 회원정보 수정을 하려고 할 때, user_pw와 user_nickname만 수정할 수 있게 두 컬럼에 대해서만 input 태그가 있습니다. input 태그에는 초기값으로 원래의 값이 들어가 있습니다.이 때, 사용자가 둘 중에 어느 것을 바꾸든 form 태그에 있는 전체 데이터를 보낸다고 할 때(바꾸지 않은 값은 초기값으로 보내집니다), 리소스를 user_pw, user_nickname으로만 보고 두 정보를 다 교체하니 PUT으로 봐야할까요? 아니면 리소스를 user 테이블 전체로 보고 user 테이블 중에 두 컬럼만 바꾸니 PATCH로 하는 게 맞을까요??
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
patch멱등성 관련 질문 2개입니다.
"PUT의 경우와 PATCH의 경우가 애매하긴 합니다만, PUT은 예를들면 AGE=30으로 계속 반복 호출하는 것이라고 생각하시면 됩니다. AGE에 30을 할당하는 행위는 몇번을 반복해도 항상 AGE가 30일 것입니다. PATCH는 반면에 AGE = AGE+1 이라고 생각하시면 됩니다. 이것은 호출될때마다 AGE의 값이 바뀌게 되겠죠. 그래서 PUT은 멱등, PATCH는 멱등하지 않다라고 합니다." 1. 위 글은 다른 분 질문에 달린 답변의 일부입니다. 여기서 이해가 되지 않는 점이 PUT은 AGE = 30처럼 덮어쓰는 행위라고 생각하면 된다고 하셨는데 PUT도 AGE = AGE+1로 반복적으로 덮어쓸 수 있는것 아닌가요? 이렇게 된다면 put도 계속 리소스가 변경되는 것 같은데 왜 멱등한 것인지 이해가 명확히 되지 않습니다. 2. 그리고 safe와 멱등의 차이점은 단순히 한 번 호출과 여러번 호출했을때의 차이점인 것인지 아니면 요청의 결과가 같다는것에 초점을 맞춰야할지 헷갈립니다... 여러번 호출해도 데이터가 변하지않는다는게 멱등인 것인지 아니면 요청의 의도가 계속 같다는 것이 멱등인것인지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
리소스를 수정하는 메서드 설계 질문
상품의 재고를 차감하는 API를 HTTP 메서드로 구현한다고 하면 PUT이 됐던 PATCH가 됐던 상품 리소스의 '재고' 부분을 변경해야 합니다. 그런데 HTTP 메서드 정의에 따르면 원래 재고가 100인 상품의 재고를 1만큼 차감한다고 할 경우 요청 URI에 들어갈 재고값은 1이 아니라 99가 되는 것이 맞는 것 같은데 제가 제대로 이해한 게 맞나요? 그렇다면 상품의 재고를 차감하는 HTTP 메서드의 URI는 어떻게 설계해야 할까요? 상품의 재고를 차감하기 전에 상품의 재고 정보를 GET으로 가져온 다음 차감된 재고량을 PUT 또는 PATCH 메소드에 담는 것이 맞나요? 실제 서비스에서는 이러한 API를 만들 때 어떤 방식으로 구현하는 지도 궁금합니다. HTTP 프로토콜을 따를 경우 PUT이나 PATCH 메소드를 호출하기 전에는 항상 GET 메소드를 호출해야 하는 것으로 보이는데 이런 부분에서 성능 이슈가 발생하지는 않는지 궁금하네요.