본문 바로가기

Front-end/Basic

GET, POST는 어떻게 다르게 쓰는지? + REST API

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 규칙

  1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
  2. 마지막에 슬래시(/)를 포함하지 않는다.
  3. 언더바 대신 하이폰을 사용한다.
  4. 파일확장자는 URI에 포함하지 않는다.
  5. 행위를 포함하지 않는다.

 

RESTful이란?

RESTFUL이란 REST의 원리는 따르는 시스템을 의미합니다.

하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아닙니다.

REST API의 설계 규칙을 올바르게 지킨 시스템RESTful하다 말할 수 있으며,

모든 CRUD 기능을 POST 처리하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있습니다.

 

REST란?

REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.

 

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
  2. HTTP Method(POST, GET, PUT, DELETE)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미

 

CRUD Operation 이란

CRUD는 대부분의 컴퓨터 소프트웨어가 갖는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말입니다.

 

Create: 데이터 생성(POST)

Read: 데이터 조회(GET)

Update: 데이터 수정(PUT) (*내가 진행했던 프로젝트에선 POST 처리)

Delete: 데이터 삭제(DELETE) (*내가 진행했던 프로젝트에선 POST 처리)

 

REST 구성 요소

  1. 자원(Resource): HTTP URI
  2. 자원에 대한 행위(Verb): HTTP Method
  3. 자원에 대한 행위의 내용(Representations): HTTP Message Pay Load

 

참고
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94