get 과 post 는 HTTP 메서드로 서버가 요청을 수행하기 위해 해야할 행동을 표시합니다.
여기서 HTTP 는 웹에서 클라이언트와 서버간에 요청, 응답으로 데이터를 주고 받을 수 있는 통신 프로토콜입니다.
프로토콜 : 특정기간에 데이터를 주고받기 위해 상호간의 정의한 규칙
✔ GET 이란?
- get 메소드는 클라이언트에서 서버로 어떠한 리소스의 정보를 요청할때 사용합니다.
- 어떤 값이나 내용, 상태 등을 바꾸지 않고 읽거나 검색할때만 사용합니다.
( -> 데이터변형의 위험이 없음)
- 쿼리스트링을 포함한 URL :
www.example-url.com/resources?name1=이예지 & name2=이지수
쿼리스트링: URL 뒤에 파라미터 포함해서 데이터를 입력하는, 가장 단순한 데이터 전달 방법
✔ POST 란?
- post 메소드는 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는데 사용합니다.
- 보안적인 부분에서 get 보다 안전하다고 생각할 수 있지만, 크롬의 개발자도구나 fiddler(피들러) 와 같은 툴로 요청내용을 확인할 수 있기때문에 민감한 데이터는 암호화해야합니다.
- 전송해야 할 데이터를 HTTP 메시지의 body 에 담아서 전송합니다.
- post로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다. 그렇지않으면 서버는 내용이나 URL에 포함된 리소스의 학장자명으로 데이터타입을 유추할 수 밖에 없습니다.
리소스 : 사용될 수 있는 어떤 항목, 자원(메모리, 데이터, 루틴..)
✔ GET 과 POST 의 차이점
| get | post |
---|
주로 사용 | 리소스 요청 | 리소스 생성 |
브라우저 기록 | ⭕ | ❌ |
북마크 추가 | ⭕ | ❌ |
데이터 길이 제한 | ⭕(url에 데이터를 넣다보니) | ❌(대용량 데이터도 가능) |
리소스 전달 방식 | 쿼리 스트링 | HTTP Body (URL 데이터 표시X) |
캐시 | 캐시됨(같은 요청 여러번해도 항상 같은 답) | 캐시되지x(다른답이 올 수 있음) |
idempotent(멱등성) | 멱등성 성립⭕ | 멱등성 성립❌ |
HTTP 응답 코드 | 200(Ok) /(여러 형식의 데이터와 함께 반환) | 201(Created) |
get-캐싱하기때문에(저장된 데이터를 활용하므로) 빠르게 접근가능함
캐시: 기억장치와 CPU사이에 위치하는 보조 기억 장치로
컴퓨터 성능 향상을 위해 사용하는 메모리(자주 사용하는 데이터들을 기억)
idempotent(멱등성) : 연산을 여러번 적용하더라고 결과가 달라지지 않는 성질