HTTP 리퀘스트 메서드

hoifoi·2023년 10월 16일
0


웹 개발에서, 클라이언트와 서버 간의 효과적인 소통은 아주 중요한 부분
아직 수박 겉핥는 정도이지만 극한의 가성비충(?)인 난 정말 이런 부분이 맘에 든다.

HTTP 리퀘스트 메서드란?

HTTP 리퀘스트 메서드는 클라이언트가 서버에게 어떤 동작을 원하는지를 나타내는 방법.

GET

리소스를 가져오기 위해 서버에 요청
주로 데이터를 읽어오는 용도로 사용

POST

서버에 새로운 데이터를 제출
주로 양식을 갖춰 데이터를 전송할 때 사용

PUT

서버에 새로운 리소스를 생성하거나 업데이트할 때 사용

DELETE

  서버에서 특정 리소스를 삭제할 때 사용

PATCH

리소스의 부분적인 수정을 요청
전체 리소스를 업데이트하는 것보다 경제적으로 사용

이때 POST, PUT, PATCH가 조금 헷갈릴 수 있는데,
각 메서드에 따라 입력, 수정 심지어 삭제까지도 가능하다.
그냥 API를 만드는 사람이 그렇게 만들어버리면 되는것인데
라면 끓이는데 냄비를 쓰든, 웍을 쓰든 상관 없는 느낌?

각 회사별로 조금씩 다르긴 하지만 보통의 기준을 들자면
완전히 새로운 데이터를 입력하는 경우에는 POST
예) 회원가입, 새로운 포스트 게시 등

데이터의 일부를 수정하는 경우에는 PATCH
예) 가입된 회원의 정보 수정, 게시된 포스트의 내용 수정 등

데이터의 전체를 수정하는 경우에는 PUT
예) 가입된 회원의 정보 전체 수정

아.. PATCH와 PUT의 차이는 개념적으로 봤을때
일부수정, 전체 수정의 차이 같은데 그래도 조금 애매해..서 다시 물어보니
이런 답변을 들을 수 있었다.

기존에 있는 회원 정보가 아래와 같다고 한다면

	{
    	name : 홍길동,
        age : 14,
        gender : f
    }

PATCH메서드로 아래와 같이 보내면 그 결과값은

	## PUT 요청
    {
    	name : 홍진영
    }
    
    ## 결과
    {
    	name : 홍진영,
        age : 14,
        gender : f
    }

PUT메서드로 아래와 같이 보내면 그 결과값은

	## PUT 요청
    {
    	name : 홍진영
    }
    
    ## 결과
    {
    	name : 홍진영,
        age : ,
        gender : 
    }
    

즉, PUT메서드는 수정하려는 데이터 테이블의 모든 값을 보내야 하는데
그 중 일부를 누락해버린다면 보낸 값 외에 다른 값들은 빈값으로 덮어버린다.

약속을 어기면 이런 참사가 벌어진다는 것..
하지만 실제로는 이렇게 일어나지 않게끔 에러가 발생한다는데
이 부분은 나중에 배우게 될 듯

그리고 이건 나중에 들은 얘기인데,
원래 메서드의 종류는 GET과 POST밖에 없었다고 한다.
크게 두가지로만 나누고 세부 액션은 따로 데이터 값으로 보냈다는 것
근데 이게 많이 피곤하기도 하고, 세부적으로 나눴을때의 효율성을 알게되어
세부적으로 나뉘어지게 되었다는 것
DELETE는 GET에서 파생이 된 것이고,
PUT, PATCH는 POST에서 파생이 된 것이라고 한다.

실제로 GET, POST만으로 나머지 메서드 방식이 돌아가기는 하는데
헷갈리지 말라고 세세하게 나뉘어진걸 굳이 그럴 필요는 없겠지?

++
발돋움 중인 예비 개발자 입니다.
태클 및 의견 공유 언제나 환영 :D

profile
컨텐츠 기획자 출신 백엔드 개발자 :D

0개의 댓글

관련 채용 정보