묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
특정 사례에 대한 PUT 실제 구현에 대한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요.PUT method를 사용할 때, 특정한 case에 대해서 현업에서는 어떤 방식으로 구현을 하는지 궁금합니다. 상황은 이렇습니다. DB에 다음과 같은 리소스가 있습니다. {'A':1,'B':2}. 이 것을 수정하기 위해 PUT method로 body에 {'B':3, 'C':4}를 담아서 요청을 날립니다.이 때의 결과는 PATCH 메서드와 다르게 replace의 의미를 충분히 고려하여 'A' 리소스를 삭제하고 {'B':3, 'C':4}가 되어야 하는지,아니면 요청으로 들어온 'B'와 'C'만을 고려하여 {'A':1, 'B':3, 'C':4}가 되어야 하는건지보통 어떤 식으로 구현하는지 궁금합니다. 저는 PATCH와 구분되게 첫 번째 방식이 맞지 않나 싶은데, 이런 것을 허용했을 때 PUT 메서드를 사용하면 리소스가 오염될 확률이 높지 않은 건지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
PUT, PATCH method 관련 질문
HTTP method 중 put과 patch에 대해서 공부하고 아 그렇구나~ 하는 와중 갑자기 뜬금없는 질문이 떠올라서 질문드립니다. put은 내용 전체를 덮어쓰는 method이고 patch는 일부만 수정이 가능한 method 라고 배웠는데, 이것도 결국 http request를 backend상에서 어떻게 처리를 하느냐에 따라 달라지는 것 아닌가요? patch request를 받았다고 한들 backend단에서 데이터를 지우고 덮어쓰는 로직을 작성하면 put method와 같은 동작이 되는 것 아닌가요..? 그냥 backend 로직 구현은 염두하지 않고 그냥 그렇게 사용하기로 약속을 한 것인지 궁금합니다. 이상한 질문일수도 있지만 갑자기 문득 생각나서 질문 올려봅니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
POST 등록과 PUT 등록 차이 중 의문점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]HTTP API URI 설계 중 POST 등록 시에는 클라이언트는 URI를 모르니 컬렉션만 지정해서 URI를 /members까지만 하고 요청하면 서버가 URI를 부여해서 회원 등록이 완료되고PUT 등록 시에는 클라이언트가 URI를 알고 있으므로 스토어 및 식별자까지 지정해서 /files/star.jpg라는 완전한 URI를 서버에 요청해서 등록된다고 이해했습니다.그런데 의문점이 POST /members 는 다수의 객체 등록이고 PUT /files/star.jpg는 단일 객체 등록이니 PUT으로 등록 시에는 클라이언트가 특정 식별자를 지정해서 단일로만 등록되는 것이고, POST로 등록 시에는 클라이언트는 특정 식별자를 모르니 컬렉션만 URI에 지정함으로써 다수가 등록되는 걸로 이해해도 될까요?만일 맞다면 앞으로 외울 때 PUT : 단일 등록 , POST : 다수 등록으로 제가 이해해도 될까요?
-
미해결모든 개발자를 위한 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 웹 기본 지식
리소스를 수정하는 메서드 설계 질문
상품의 재고를 차감하는 API를 HTTP 메서드로 구현한다고 하면 PUT이 됐던 PATCH가 됐던 상품 리소스의 '재고' 부분을 변경해야 합니다. 그런데 HTTP 메서드 정의에 따르면 원래 재고가 100인 상품의 재고를 1만큼 차감한다고 할 경우 요청 URI에 들어갈 재고값은 1이 아니라 99가 되는 것이 맞는 것 같은데 제가 제대로 이해한 게 맞나요? 그렇다면 상품의 재고를 차감하는 HTTP 메서드의 URI는 어떻게 설계해야 할까요? 상품의 재고를 차감하기 전에 상품의 재고 정보를 GET으로 가져온 다음 차감된 재고량을 PUT 또는 PATCH 메소드에 담는 것이 맞나요? 실제 서비스에서는 이러한 API를 만들 때 어떤 방식으로 구현하는 지도 궁금합니다. HTTP 프로토콜을 따를 경우 PUT이나 PATCH 메소드를 호출하기 전에는 항상 GET 메소드를 호출해야 하는 것으로 보이는데 이런 부분에서 성능 이슈가 발생하지는 않는지 궁금하네요.