API
Web과App 에서 사용되는 Api는 보통 서비스에서 소스는 공개하지않고 해당 기능을 제공하려고 할때 이용합니다.
이러한 api를 바탕으로 Google 로그인이나 Naver 지도등의 기능을 활용할 수 있게됩니다. 이처럼 우리는 다른 서비스의 기능을 이용하고자 할때 api를 통해서 이용하고는 합니다.
REST API
Representational State Transfer (표현 상태 전이)
HTTP 기반으로 필요한 자원에 접근하는 방식을 정해해놓은 아키텍처입니다.
REST API 의 특징
- 서버에 있는 resource는 각각의 바로접근 가능한 고유 URI가 존재한다.
- 모든 요청은 요청마다 정보를 주기 때문에 Session을 보관할 필요가 없습니다. 이 때문에 서비스에 자유도가 높아지고 유연한 아키텍쳐 적응이 가능합니다.
- HTTP Method 를 이용합니다. (GET, POST, PUT, DELETE)
- 서비스 내에 하나의 Resource가 주변에 연관된 Resource들과 연결되어 표현이 되어야 합니다.
REST API 의 구성
REST API는 Resource, Method, Message 세가지로 구성되어 있습니다.
Resource
REST 는 자원접근시 URI로 하게 됩니다. 이 때문에 URI설계시 규칙에 유의하여 설계하여야합니다.
- ' / '의 쓰임새는 계층 관계를 표현시 사용합니다.
- URI를 이루는 resource들은 동사보다는 명사로 이루어져야 합니다.
- REST 리소스 간에는 연관 관계를 표현시 다음과 같은 방법을 사용합니다.
/리소스명/리소스ID/관계가 있는 다른 리소스
GET : /users/{userid}/devices (has 관계)
- URI에서는 언더바 ( _ ) 보다 하이픈 ( - ) 을 권장합니다.
- 소문자로 작성합니다.
- 확장자는 포함시키지 않습니다.
위와 같은 내용들을 유의해서 URI 설계를 하도록해야합니다.
HTTP Method
자원에 접근시 어떤 성격의 요청인지는 HTTP Method를 통해서 파악합니다.
- GET - 해당 리소스를 조회합니다.
- POST - URI를 요청시 리소스를 생성합니다.
- PUT - 리소스를 수정합니다.
- DELETE - 리소스를 삭제합니다.
Message
메시지는 HTTP header 와 body, status code 로 구성되어 있으며 메시지를 처리하기 위한 정보를 포함합니다.
- Body - 자원에 대한 정보를 전달 ( JSON / XML / 사용자 정의 포맷)
- Header - HTTP 바디에 어떤 Format 정보가 담겨있는가를 정의합니다. 요청 HTTP Header는 "Accept" 항목으로 응답 HTTP Header 는 "Content-Type" 으로 설명합니다.
- 응답상태코드
REST API는 이를 통해서 언어와 플랫폼에서 독립적으로 구현이 가능하다는 장점이 있어서 많이 사용되고 있습니다. 또한 가장 대중적인 Protocol 인 HTTP 를 이용해서 활용도가 높고 쓰임새가 다양하는 장점으로 많은 인기를 누리고 있습니다.