본문 바로가기

카테고리 없음

REST API의 기초

이미지 출처 : https://dreamix.eu/blog/frontpage/top-3-cryptocurrencies-rest-apis

 

REpresentational State Transfer Application Programming Interface

REST API란 HTTP 기반 자원에 접근하는 방식을 정한 아키텍쳐이다.

탄생 배경

HTTP가 설계의 우수성에 비해 제대로 사용되지 않아서, 웹의 장점을 활용할수 있는 아키텍처 REST를 발표했다.

 

장/단점

장점

  • 언어와 플랫폼에 독립적이다.
  • SOAP보다 개발이 쉽고 단순
  • REST가 지원하는 프레임웍이나 언어등 도구가 없어도 구현 가능
  • 기존 웹 인프라 사용 가능. HTTP그대로 사용

단점

  • HTTP만 사용 가능
  • p2p통신모델을 가정했기 때문에 둘 이상을 대상으로 하는 분산환경엔 유용하지 않음
  • 보안, 정책등에 표준이 없어서 관리가 어렵다. 이 부분까지 고려하면 설계나 구현이 어렵다.

 

REST 속성

  1. 서버의 모든 resource는 각 resource당 클라이언트가 접근 할 수 있는 고유 URI가 존재한다.
  2. 모든 요청은 클라이언트가 요청 할 때마다 필요한 정보를 주기 때문에, 서버에서는 세션 정보를 보관할 필요가 없다. → 서비스의 자유도가 높아지고 유연한 아키텍쳐 적용이 가능하다.
  3. HTTP 메소드를 사용한다. 모든 resource는 GET, POST, PUT, DELETE로 접근한다
  4. 서비스 내에 하나의 resource가 주변 연관된 리소스들과 연결되어 표현이 되어야 한다.

REST 구성요소

  • Resource
  • Method
  • Message

URI 설계 규칙

  1. '/' 는 계층관계를 나타낸다.
  2. resource는 동사보다는 명사로 구성(복수)
  3. underscore 대신 hyphen 사용
  4. 소문자 사용
  5. 확장자는 포함하지 않는다. → 헤더를 사용한다.

HTTP Methods

  • GET - 조회
  • POST - 생성
  • PUT - 수정
  • DELETE - 삭제

POST vs PUT

둘의 차이는 멱등성과 리소스결정권이 있다.

멱등성 Idempotence

여러번 수행해도 항상 결과가 같다.
post는 항상 새 리소스를 만들지만, put은 반복수행해도 결과가 같다.

리소스 결정권

uri가 서버에 의해 결정 vs 클라이언트에 의해 결정

post 는 클라이언트는 실제 저장 위치를 모르므로 서버에서 처리하도록한다.

put은 변경 대상 리소스 위치를 알고있어서 특정 업데이트 대상 리소스를 갱신 할 수 있다.

 

추천영상

이응준님의 DEVIEW 2017 발표 "그런 REST API로 괜찮은가"

링크 : https://youtu.be/RP_f5dMoHFc

 

참조

 

POST vs PUT

얼마전에 어떤분께서 REST의 POST와 PUT의 차이점을 물어보았다. POST는 들어도 보고 사용도 해보았지만, PUT은 처음 들은 용어였다. 솔직히 POST와 PUT이 무엇인지 몰라서 잘 모르겠다고 대답하였

blog.embian.com

 

What's the difference between a POST and a PUT HTTP REQUEST?

They both seem to be sending data to the server inside the body, so what makes them different?

stackoverflow.com

 

REST API ?

※(2020.11.03 추가) 여러분, 3년 전 글이라 출처가 기억나진 않지만 해당 게시글은 인터넷에서 여러부분을 참고해서 작성된 글입니다. 다만 의도적으로 출처를 기입하지 않았었다기보단 당시 Medium

dydrlaks.medium.com