HTTP Method

Gyuri Kim·2023년 6월 16일
0

cs

목록 보기
6/7

HTTP Method는 GET, POST, PUT, DELETE 4가지가 대표적입니다. 보통 CURD에서 조회(GET), 등록(POST), 수정(PUT), 삭제(DELETE) 로 사용됩니다.


💡 4가지가 대표적이면 더 있나요?
  • HTTP Method 는 총 8가지가 존재합니다.
  • HEAD, OPTIONS, PATCH, CONNECT 4가지가 더 존재합니다.



GET

GET 정의

  • URL에 데이터를 포함시켜 요청
  • URL에 데이터가 노출되어 보안에 취약
  • 전송하는 길이에 제한

GET 은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드입니다. 주로 데이터를 조회할 때 사용됩니다.

GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리문자열 (query string) 이라고 부릅니다. 쿼리 문자열은 URL의 끝에 ? 기호로 시작하고, 그 뒤에 키-값 쌍으로 데이터를 전달하는 형식입니다. 또한, &마크를 통해 데이터를 연결합니다. 데이터를 조회하는 것이기 때문에 요청시 body 값과 content-type 이 비워져있습니다.

ex) https://naver.com/login?id=user1&pw=1234

GET 요청이 성공적으로 이루어진다면 200 http 응답 코드를 리턴하고, 에러 발생 시 주로 404(not found) 에러나 400(bad request) 에러가 발생합니다. GET 요청은 데이터를 읽을 때만 사용되고 수정할 때 사용하지 않아야합니다.

GET 특징

  • 캐시가 가능하다

같은 내용의 GET 요청은 매회 같은 결과를 가져옵니다. 그렇기 때문에 get 요청에 대한 응답은 캐시됩니다. 좀 더 구체적으로 설명하면, GET 요청은 보통 서버로부터 정보를 받아오는 역할을 하는데, 만약 이전에 동일한 GET 요청을 한 적이 있다면, 브라우저는 캐시에 해당 데이터를 저장합니다. 그리고 이후에 동일한 GET 요청을 보낼 때에는, 브라우저는 서버에 접근하는 대신 캐시에 저장된 데이터를 사용할 수 있습니다. 그렇기 때문에 내용이 바뀌지 않는 응답을 얻으려는 요청에는 get이 적합합니다.

GET으로 매번 최신의 응답을 얻고자 할 때는 파라미터에 시각을 붙여 매회 요청하는 변경하는 방법을 사용할 수도 있습니다.

💡 캐시란?

캐시는 이전에 받아온 데이터를 저장해두는 임시 공간입니다. 이렇게 저장해둔 데이터를 사용하면, 동일한 요청을 다시 보낼 때 서버에 다시 접근하지 않고 저장된 데이터를 사용할 수 있습니다. 이렇게 함으로써 네트워크 트래픽을 줄이고, 웹 페이지의 로딩 속도를 향상시킬 수 있습니다.


  • 북마크가 가능하다

북마크를 사용하면, 이전에 방문한 웹 페이지의 주소를 저장해두고 나중에 다시 방문할 때 사용할 수 있습니다. 따라서, 사용자가 북마크로 저장한 웹 페이지의 URL을 클릭하면, 브라우저는 해당 URL을 GET 요청으로 해석하여 서버에 보내고, 서버는 해당 웹 페이지의 내용을 다시 브라우저에 보내주게 됩니다. 즉, 북마크를 사용하면 해당 URL을 클릭하면 GET 요청이 발생하여 저장된 웹 페이지의 내용을 다시 받아올 수 있습니다. 간단한 데이터를 넘길 때 편리할 수도 있지만 보안면에 취약하므로 사용하지 않는 것을 권장합니다.


  • 데이터 크기 제한이 있다

GET 요청에는 일반적으로 길이 제한이 있습니다. 하지만 제한의 크기는 서버 및 브라우저에 따라 다를 수 있습니다. 길이 제한은 주로 URL에 포함되는 쿼리 문자열의 길이에 적용됩니다.데이터 크기를 제한하지 않는 실행 환경이라 하더라도 긴 URL은 동작을 느리게 합니다.



POST

POST 정의

  • 데이터를 body에 포함하여 전송
  • URL에 데이터가 노출되지 않아 기본적 보안 지킴
  • 전송하는 길이에 제한 없음

POST 는 클라이언트에서 서버로 새로운 리소스를 생성하거나 업데이트 할 때 사용되는 메서드입니다.

전송할 데이터를 http 메시지 body 부분에 담아 서버로 보냅니다. 요청 시에 body의 타입을 명시해주기 위해서 content-type값을 작성해야합니다. 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러나는건 아니라서 보안이 필요한 부분에 많이 사용된다.

POST 방식이 성공적으로 이루어지면 201(created) http 응답을 반환합니다. 같은 POST 요청을 반복했을 때 항상 같은 결과물이 나오는 것을 보장하진 않습니다. 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 리소스를 반환할 가능성이 높습니다.


POST 특징

  • 캐시되지 않는다
  • 브라우저 히스토리에 남지 않는다
  • 북마크 되지 않는다
  • 데이터 길이에 제한이 없다


PUT

PUT 방식은 기존에 존재하는 리소스를 생성 및 업데이트 하기 위해 사용되는 메서드입니다.

서버에 이미 존재하는 리소스를 갱신하기 위해서 클라이언트는 명시적으로 갱신 또는 대체할 리소스의 위치를 지정해야 합니다. PUT 요청은 해당 리소스의 전체 내용으로 요청을 보냅니다.

PUT은 멱등성이 있습니다. 다시 말해서 동일한 PUT 요청을 여러 번 호출하더라도 항상 동일한 결과가 생성됩니다.

데이터를 수정하는 것이기 때문에 요청시에 body 값과 content-type 값을 작성해야합니다. URL을 통해서 어떠한 데이터를 수정할지 파라메터를 받고 수정할 데이터 값을 Body 값을 통해서 받아 데이터를 수정합니다. 데이터 조회에 성공한다면 body 값에 저장한 데이터 값을 저장하여 성공 응답을 보냅니다.



DELETE

DELETE 방식은 지정된 리소스를 삭제할 때 사용됩니다. URL을 통해서 어떠한 데이터를 삭제할지 파라메터를 받아 데이터를 삭제하기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있습니다. 데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 됩니다.




🎤 질문과 대답

Q http method에 대해 말해주세요


http method란 REST를 지키기 위해 행위를 전달하는 방법입니다. http method 는 대표적으로 get, post, put, delete 가 있습니다.
get은 서버로부터 데이터를 조회할 때 사용합니다.post는 서버에 데이터를 생성할 때 사용합니다. put은 서버의 데이터를 갱신할 때 사용합니다. delete는 서버의 데이터를 삭제할 때 사용합니다.


Q GET과 POST의 차이점에 대해 말해주세요


get은 서버에 데이터를 요청할 때 사용하고, post는 서버에 데이터를 생성 및 업데이트 할 때 사용됩니다.

get은 데이터 파라메터 값을 URL 주소 끝에 쿼리 문자열 형식으로 전송합니다. url에 노출되어 전달되기 때문에 보안성이 떨어집니다. 반면에 post는 body에 데이터를 담아 전송합니다. post 방식은 url에 데이터가 노출되지 않으므로 기본적 보안성이 지켜집니다.

GETPOST
데이터헤더에 포함바디에 포함
사용목적서버의 리소스에서 데이터 요청서버 리소스 생성 및 업데이트
길이 제한OX
캐시OX
브라우저 히스토리OX
북마크OX
멱등성OX

Q POST와 PUT의 차이점에 대해 말해주세요


POST새로운 리소스를 생성하거나 서버의 리소스에 데이터를 추가하기 위해 사용됩니다. 그렇기 때문에 멱등성이 없으며, 동일한 POST 요청을 여러 번 보내면 매번 새로운 리소스가 생성됩니다.

하지만 PUT은 서버에 존재하는 리소스를 갱신하기 위해 사용됩니다. 요청을 처리하기 위해 명시적으로 변경할 리소스를 지정해야합니다. 그렇기 때문에 멱등성이 있으며, 같은 요청을 여러 번 보내더라도 결과는 동일한 리소스가 갱신되거나 대체됩니다.

즉, POST는 새로운 리소스를 생성하거나 데이터를 추가할 때 사용되고, PUT은 이미 존재하는 리소스를 갱신하거나 대체할 때 사용됩니다.

사용 예시 차이점

  • POST: 블로그 글 작성, 새로운 사용자 등록 등의 작업에 주로 사용됩니다.
  • PUT: 기존 블로그 글 수정, 사용자 정보 갱신 등에 주로 사용됩니다.

Q PUT과 PATCH의 차이점에 대해 말해주세요


PUT은 리소스의 완전한 대체 또는 갱신을 위해 사용되며, PATCH는 리소스의 일부만 변경하기 위해 사용됩니다. 멱등성은 PUT의 경우에는 보장되지만, PATCH는 요청의 내용과 서버의 구현에 따라 달라질 수 있습니다. PUT은 전체 리소스를 요청 본문에 포함하여 전송하고, PATCH는 변경사항만을 요청 본문에 포함하여 전송합니다.




📒 참고

https://velog.io/@yh20studio/CS-Http-Method-란-GET-POST-PUT-DELETE

https://noahlogs.tistory.com/35

profile
👩‍💻 IT Engineering (이사 전 블로그 : https://blog.naver.com/kgr2626 )

0개의 댓글