일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링부트 도커
- Programmers
- 삼각형의 완성조건
- 프로그래머스 풀이
- COS Pro
- SWEA
- index of
- Lv1
- 스프링부트 도커 배포
- 프로그래머스 자바
- StringTokenizer
- java
- 버퍼
- 스프링부트 도커로 배포
- Stack
- lv2
- 스택
- 프로그래머스
- Queue
- 문자열
- 알고리즘
- 큐
- 이진수 변환
- 자바
- 백준 N과 M 자바
- 오름차순 정렬
- 프로그래머스 문자열 정렬
- 백준
- lv0
- 클라이언트
- Today
- Total
mun dev
[네트워크] HTTP GET과 POST 본문
둘 다 HTTP 프로토콜상에서 무언가를 요청할 때 사용하는 방식입니다.
하지만 둘의 특성과 생겨난 배경은 엄연히 다르므로 제대로 이해하고 기술 목적에 맞게 적재적소에 사용해야 합니다.
GET
GET메서드는 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드입니다.
GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송하는 것입니다.
쿼리스트링: URL의 끝에 ?와 함께 값으로 쌍을 이루는 요청 파라미터입니다.
만약 요청 파라미터가 여러개라면 &로 연결합니다.
localhost8080/member/join?id=1&pw=1234
요청 파라미터명은 id와 pw, 각각의 파라미터는 1과 1234라는 값으로 서버에 요청을 보내게 됩니다.
GET요청에 대한 기타 참고사항
- 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET요청을 사용해서는 안됩니다.
- GET 요청은 브라우저 기록에 남습니다.
- GET요청에는 데이터 길이에 대한 제한이 있습니다.
- GET요청은 성공시 HTTP응답 코드를 XML, JSON 뿐만 아니라 여러 데이터, 여러 형식의 데이터와 함께 반환합니다.
POST
POST 메서드는 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는데 사용됩니다.
GET과 달리 전송해야될 데이터를 HTTP메시지의 body에 담아서 전송합니다.
HTTP메세지의 Body는 길이의 제한 없이 데이터를 전송할 수 있습니다. 그래서 POST요청은 GET과 달리 대용량 데이터를 전송할 수 있는 이유도 이 때문입니다.
내용이 눈에 보이지 않아 GET보다 보안적인면에서 안전하다고 생각할 수 있지만, POST요청도 크롬의 개발자도구 등으로 요청내용을 확인 할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 합니다.
Post요청에 대한 기타 참고 사항
- POST요청은 브라우저기록에 남아 있지 않습니다.
- POST요청에는 데이터 길이에 대한 제한이 없습니다.
- POST요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
GET과 POST의 차이점
- 사용목적: GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
- DB로 따지면 GET은 SELECT에 가깝고, POST는 Create에 가깝다고 보면된다.
- 요청에 body 유무: POST는 body 가 존재합니다.
- GET 메소드 요청시 body 는 원래 보낼 수 없었지만 2014년도 부터는 body 를 보낼 수 있게 되었다.
- GET 메소드 요청시 body 를 보낼 수는 있으나 일부 클라이언트에서는 지원되지 않을 수 있다.
- 멱등성(idempotent): GET요청은 멱등이며, POST는 멱등이 아니다.
멱등(idempotent)이란?
멱등의 사전적 정의는 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다. GET은 리소스를 조회한다는 점에서 여러번 요청하더라도 응답이 똑같을 것입니다. 반대로 POST는 리소스를 새로 생성하거나 업데이트를 사용되기 때문에 멱등이 아니라고 볼 수 있습니다.
(POST요청이 발생하면 서버가 변경될 수 있다)
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 네트워크 기초, LAN, TCP와 UDP (0) | 2024.01.23 |
---|---|
HTTP와 HTTPS (0) | 2023.04.03 |
[얄팍한 코딩사전] - IP주소를 알아봅시다! (Feat. 공인/사설/고정/유동IP, 포트포워딩, DMZ, DDNS) (0) | 2023.02.21 |
[얄팍한 코딩사전] DNS가 뭔가요? + 도메인, A Record, CName (1) | 2023.02.21 |