GET, POST는 어떻게 다르게 쓰는지
GET
GET method는 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드입니다.
데이터를 읽거나(Read), 검색(Retrieve)할 때에 사용되는 method라고 할 수 있습니다.
GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링(QueryString)이라고 부릅니다.
GET 방식은 데이터를 요청할 때 이 요청하는 데이터가 HTTP Request Message의 Header 부분의 url에 담겨서 전송된다. 그래서 요청시 url 상에 ? 뒤에 데이터가 붙어서 request를 보내는 것이다.
요청 파라미터가 여러 개인 경우 &로 연결합니다.
그리고 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않습니다.
따라서 이런 이유로 사용하면 안전하다고 간주되고, 데이터의 변형의 위험없이 사용할 수 있다는 뜻입니다.
GET 요청에 대한 기타 참고 사항
- GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
- 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안 됩니다.
- GET 요청은 브라우저 기록에 남습니다.
- GET 요청을 북마크에 추가할 수 있습니다.
- GET 요청에는 데이터 길이에 대한 제한이 있습니다.
- Get 요청은 성공시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt등..), 여러 형식의 데이터와 함께 반환합니다.
- GET 요청은 idempotent합니다.
POST
POST method는 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는데 사용됩니다.
GET과 달리 전송해야할 데이터를 HTTP 메세지의 Request Body에 담아서 전송합니다.
그리고 그 Body의 타입은 요청 헤더의 Content-Type에 요청 데이터의 타입 표시에 따라 결정 됩니다.
HTTP 메세지의 Body의 길이 제한없이 데이터를 전송할 수 있습니다.
그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있는 이유도 이 때문입니다.
이처럼 POST는 데이터가 Body로 전송되고, 내용이 눈에 보이지 않아 GET 보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬의 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 합니다.
Post 요청에 대한 기타 참고 사항
- POST 요청은 캐시되지 않습니다.
- POST 요청은 브라우저 기록에 남아 있지 않습니다.
- POST 요청을 북마크에 추가할 수 없습니다.
- POST 요청에는 데이터 길이에 대한 제한이 없습니다.
- Post 요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
- Post 요청은 idempotent하지 않습니다.
idempotent란?
멱등법칙 또는 멱등성이란 뜻으로 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
REST API란?
REST API (Representational State Transfer API)란 REST를 기반으로 만들어진 API를 의미합니다.
REST API 규칙
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
- 마지막에 슬래시(/)를 포함하지 않는다.
- 언더바 대신 하이폰을 사용한다.
- 파일확장자는 URI에 포함하지 않는다.
- 행위를 포함하지 않는다.
RESTful이란?
RESTFUL이란 REST의 원리는 따르는 시스템을 의미합니다.
하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아닙니다.
REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있으며,
모든 CRUD 기능을 POST 처리하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있습니다.
REST란?
REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
- HTTP Method(POST, GET, PUT, DELETE)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미
CRUD Operation 이란
CRUD는 대부분의 컴퓨터 소프트웨어가 갖는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말입니다.
Create: 데이터 생성(POST)
Read: 데이터 조회(GET)
Update: 데이터 수정(PUT) (*내가 진행했던 프로젝트에선 POST 처리)
Delete: 데이터 삭제(DELETE) (*내가 진행했던 프로젝트에선 POST 처리)
REST 구성 요소
- 자원(Resource): HTTP URI
- 자원에 대한 행위(Verb): HTTP Method
- 자원에 대한 행위의 내용(Representations): HTTP Message Pay Load
'Front-end > Basic' 카테고리의 다른 글
Web Programming Tutorial (0) | 2022.02.18 |
---|---|
Async, Await와 Promise의 차이는? (0) | 2021.10.31 |
Promise와 Callback의 차이점은 무엇이며 각각의 장단점은? (0) | 2021.10.24 |
AJAX란 무엇인가? (0) | 2021.10.24 |
클로저는 무엇인가요? 원리와 왜 사용하는지 (0) | 2021.10.24 |