새소식

인기 검색어

개인공부/Java

URL GET POST 방식

  • -

사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다.

사용자는 단순히 URL(Uniform Resource Locator)을 입력하였을 뿐이지만 서버 내부에서는 클라이언트의 요청에 응답(웹페이지로 표현)하기 위해서 처리를 해주어야 합니다.

여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 2가지 방식이 있는데, 그것이 바로 오늘의 주인공인 GET방식과 POST방식입니다.


HTTP

GET방식과 POST방식에 대해 알아보기 위해서는 HTTP 프로토콜에 대해 알고 있어야 합니다.

HTTP(Hypertext Transfer Protocol)란 하이퍼텍스트 전송 규약으로 Web-Client와 Web-Server간 데이터를 전송하는 프로토콜입니다.

​GET 메소드와 POST 메소드는 HTTP 프로토콜에서 데이터 전송을 위해 지원하는 7가지 메소드 중 일부 입니다.​

 

HTTP통신할때 보내는 데이터는 HTTP 패킷이라 하는데 해당 패킷의 구조는 크게 Header 영역과 Body영역으로 나누어 집니다.

Header에는 크게 여러가지 정보와 어떠한 방식의 메소드를 사용 하였는지에 대해 적게 됩니다.

또한 어떠한 메소드 방식을 사용하였는지에 따라 Body 영역의 사용 유무 및 사용 방법이 달라지게 됩니다.


GET 방식

- 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 "이름"과 "값"이 결합된 스트링 형태로 전달

- 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.

- 길이에 제한이 있다.(=전송 데이터의 한계가 있다.)

-캐싱할 수 있다.

- Post방식보다 상대적으로 전송 속도가 빠르다.

 

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

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

 

URL뒤에 ? 를 사용하여 Parameter를 작성하게 되고 & 을 붙여 여러개의 Parameter를 구분하게 됩니다.

이런식으로 GET방식은 데이터를 전송하게 되며 URL에 Parameter를 전송하기 때문에 body영역을 사용하지 않습니다.

또한 URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있습니다.

한번 요청시 URL포함 255자 까지 전송이 가능하며 HTTP/1.1 에서는 2048자 까지 가능.

POST 방식

- 일정 크기 이상의 데이터를 보내야 할 때 사용한다.

- 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.

- 주소창에 전송하는 데이터의 정보가 노출되지 않아 Get방식에 비해 보안성이 높다.

- 속도가 Get방식보다 느리다.

- 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송가능.

POST 방식의 특징으로는 대표적으로 GET 방식과는 달리 body영역에 데이터를 실어 보낸다는 점입니다.

Body에 데이터를 실어 보내기 때문에 데이터 전송양에 길이 제한이 없으며 대용량 데이터를 보내는데 적합합니다.

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

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

BODY 영역
{
"param1":"value1",
"param2":"value2"
}


GET 방식과 POST 방식의 차이

- Get은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용

- Post는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용.

- Get을 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.

- Post방식은 전달되는 데이터가 보이지 않는다.

- Get방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.

- 웹서버에 많은 데이터를 전달하기 위해서는 Post 방식을 사용하는 것이 바람직하다.

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

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

GET VS POST 비교표

참고자료:

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-GET%EA%B3%BC-POST-%EB%B0%A9%EC%8B%9D-%EB%B9%84%EA%B5%90

 

[WEB] 🌐 GET과 POST 방식 비교

​ 사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL(Uniform Resource Locator)을 입력하였을 뿐이지만

inpa.tistory.com

 

'개인공부 > Java' 카테고리의 다른 글

Unicast 프로그램  (0) 2022.09.02
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념  (1) 2022.09.02
절대경로와 상대경로  (0) 2022.09.02
OSI 7계층  (1) 2022.09.02
java socket  (0) 2022.09.02
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.