[기술] REST API & GET/POST 정리

dygreen·2022년 6월 2일
0

기술

목록 보기
2/9
post-thumbnail
post-custom-banner

📌 REST API ?

: REST는 Representational State Transfor라는 용어의 약자로 로이 필딩이라는 사람이 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 한다.

  • API(Application Programming Interface) = 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계
  • REST = 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미함
    => RESTful API

REST API란 REST를 기반으로 만들어진 API를 의미함


📌 REST 구성

  • 자원(Resource) : URI
  • 행위(Verb) : HTTP METHOD
  • 표현(Representations)
  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(삭제)를 묶어서 일컫는 말로 REST에서의 CRUD Operation 동작 예시는 다음과 같다.

  • Create: 데이터 생성(POST) | ex. 타임라인에 사진을 '올리는' 요청
  • Read: 데이터 조회(GET) | 타임라인에 사진을 '불러오는' 요청
  • Update: 데이터 수정(PUT) | '바꾸는' 요청
  • Delete: 데이터 삭제(DELETE) | '지우는' 요청

CRUD 요청은 각각의 주소를 가짐 >> 주소가 너무 많아지고 관리하기 힘들어짐 >> 버그
>> 체계적인 API 관리를 위한 RESTful API 등장 (👉 주소 개수가 줄어듦. CRUD를 하나의 주소로 관리함. 어떤 요청을 보냈는지 파악하기도 쉬움)

📌 REST의 특징

  • Statless(무상태성)
    : 작업을 위한 상태정보를 따로 저장하고 관리하지 않음. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됨. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해짐.

  • Cacheable(캐시 처리 가능)
    : HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용 가능함. 따라서 HTTP가 가진 캐싱 기능이 적용 가능함.

  • Server-Client(서버-클라이언트 구조)

  • Layered System(계층화)

  • Uniform Interface(인터페이스 일관성)


📌 REST API 디자인 가이드

1) URI는 정보의 자원을 표현해야 한다.
2) 자원에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.

회원 정보를 가져올 때는 GET, 회원 추가 시의 행위를 표현하고자 할 때는 POST Method를 사용하여 표현한다.

POST - POST를 통해 해당 URI를 요청하면 리소스를 생성함<
- (URL에 뜨지 않고) 숨겨서 뭔가 정보를 전달하거나 요청함.
GET - GET를 통해 해당 리소스를 조회함.
리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져옴
- URL을 입력해서 요청함
PUT - PUT를 통해 해당 리소스를 수정함.
DELETE - DELETE를 통해 리소스를 삭제함.

📌 GET / POST ?

GET은...

✅ 요청을 해도 원본 데이터의 변화를 가져오지 않아야 함.
✅ 브라우저 및 서버는 최대 URL 길이 제한이 있기 때문에 큰 데이터는 GET을 통해 전달할 수 없다.
요청 내용이 URL에 노출되므로 중요한 데이터를 담으면 심각한 보안 문제를 야기할 수 있다.

POST는...

✅ 요청을 통해 CRUD가 이뤄질 수 있음(원본 파일의 수정 발생).
중요한 정보를 전달할 때, 전송 데이터의 양이 많을 때 적합.
👉 전송 길이에 제한이 없고, body에 데이터를 담아 전달하므로 기본적인 보안이 이뤄짐 (URL에 노출만 안 될 뿐 쉽게 확인 가능하긴 함)


📚 Reference

profile
✨감명깊은 앞단을 향한 꾸준한 여정✨
post-custom-banner

0개의 댓글