참고/네트워크

🔥 GET / POST

dev_jiwon 2022. 12. 13.

GET 방식과 POST 방식

 

 

HTTP

🔥 HTTP(Hypertext Transfer Protocol)란 하이퍼텍스트 전송 규약으로 Web-Client와 Web-server간 데이터를 전송하는 프로토콜이다. GET과 POST 메소드는 HTTP 프로토콜에서 데이터 전송을 위해 지원하는 7가지 메소드 중 일부이다.

 

 🔥 HTTP통신 할때 보내는 데이터는 HTTP 패킷이라 하는데 해당 패킷의 구조는 크게 Header 영역과 Body영역으로 나누어진다. Header에는 크게 여러가지 정보와 어떠한 방식의 메소드를 사용 하였는지에 대해 적는다. 또한 어떠한 메소드 방식을 사용하였는지에 따라 Body 영역의 사용 유무 및 사용 방법이 달라지게 된다.

 

 

GET 방식

GET 방식의 특징으로는 대표적으로 URL에 Parameter를 붙여서 전송한다는 것이다

ex) http://jiwonch.tistory.com/test_api?param1=value1¶m2=value2

🔥URL 뒤에 ?를 사용하여 Parameter를 작성하게 되고 &을 붙여 여러개의 Parameter를 구분하게 된다. 이런식으로 GET 방식은 데이터를 전송하게 되면 URL에 Parameter를 전송하기 때문에, body 영역을 사용하지 않는다. 또한 URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있다. 한번 요청시 URL 포함 255자 까지 전송이 가능하며 HTTP/1.1 에서는 2048자까지 가능하다.

 

POST 방식

ex)

HEADER 영역

Content-Type:application/json; charset=UTF-8

.....

BODY 영역

{ "param1":"value1", "param2":"value2" }

🔥 POST 방식의 특징으로는 대표적으로 GET 방식과는 달리 body 영역에 데이터를 실어 보낸다는 것이다. Body에 데이터를 실어 보내기 때문에 데이터 전송양에 길이 제한이 없으며 대용량 데이터를 보내는데 적합하다.

또한 POST로 데이터를 전송할때에는 Body 영역 데이터 타입을 Header Content -Type에 명시를 해줘야 한다. POST 방식은 GET방식과는 달리 보내는 데이터를 URL를 통해 볼 수 없어 보안적으로 안전하다고는 하지만 다른 툴을 사용하여 POST여역의 데이터를 확인이 가능하기 때문에 안심할 순 없다.

 

GET 방식과 POST 방식의 차이

🔥 GET 방식은 idempotent POST 방식은 non-idempotent

** idemptent란 멱등성으로 수학적으로 연산을 여러번 적용하더라도 결과값이 바뀌지 않는다는 성질이다.

 

1)

GET 메소드를 사용해서는 여러번 적용하더라도 결과 값이 바뀌지 않는 것을 개발 POST 메소드를 사용해서는 결과값이 바뀌는 유형의 개발이 적합

GET은 가져오다라는 뜻으로 SELECT용도로 개발해야한다는 정의가 많다. SELECT는 데이터를 변경하지 않고 가져오기 때문에 idempotent 성질을 가지고 있기 때문이다.

또한 GET 방식은 URL 기반의 parameter을 기반으로 하기 때문에 데이터 변경 등의 기능을 개발하게 되었을 때 크롤링 봇등의 예기치 못한 접근으로 인해 문제가 발생할 여지가 있다.

 

2)

GET방식은 POST 방식보다 빠르다

GET 방식은 캐싱이 가능하고 POST 방식은 캐싱이 불가능하다.

캐싱으로 인해 한 번 접근했던 정보에 대해 다시 접근할 때 빠르게 가져올 수 있기 때문에 POST 방식 보다는 빠르다.

 

요약

🔥 GET/POST 메소드는 기능 개발을 할때 각각의 특징에 맞게 잘 선택해서 개발을 할 필요성이 있다.

 

'참고 > 네트워크' 카테고리의 다른 글

👣REST API  (0) 2022.12.13
👣Synchronous / Asychronous (동기식/비동기식)  (0) 2022.12.13

댓글