TIL
[TIL-56/240416] REST API
prao
2024. 4. 17. 09:00
반응형
REST API
REST
- 2000년도 로이 필딩의 박사학위 논문에 최초로 소개
- 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로 REST 발표
- REST는 'Representational State Transfer'의 약어
- HTTP 프로토콜을 사용하여 데이터를 주고 받는 방법
- HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍처
REST 구성
- 자원(Resource; (ex) /boards, /users ...) → URI(Uniform Resource Identifier)
- HTTP 메서드 → 작업에 대한 정의(CRUD)
- 표현(Representation) → Client와 Server 간 자원의 상태를 전달하는 방법으로 JSON, XML 등의 형식 사용
API란?
- Application Programming Interface
- 다른 소프트웨어 어플리케이션에서 사용할 수 있는 기능을 제공하는 인터페이스
- 어플리케이션 간 데이터를 교환하고 상호 작용하도록 도움을 줌
- (예: 미세먼지 정보 제공 시스템, 핸드폰 정보 미세먼지 앱)
API 유형
Private API
- 비공개 API
- 내부 시스템 또는 서비스 간의 통신을 위해 사용되는 API로 외부에 공개되지 않음
- 주로 기업 내부 시스템에서의 통신을 위해 사용
Public API
- 공개 API
- 외부 사용자 혹은 외부 어플리케이션과 상호작용하기 위해 공개된 API
- 사용에 대한 권한 설정과 비용이 들 수 있음
- 공공데이터 포털, 기상청, Naver, Kakao, Youtube 등 다양한 API가 존재
- 대부분 REST 방식으로 작성되어 있음
REST API(REST + API)
- 기존의 전송방식과는 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송
- 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리 가능
- HTTP URI을 통해 제어할 자원(Resource)을 명시하고, HTTP method(GET/POST/PUT/DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 Architecture
- 표준이 정해진 것이 없어 관례 정도로 사용하는 Rule 존재
- 하이픈(-)은 사용 가능, 언더바(_)는 사용 X
- 특별한 경우를 제외하고 대문자 사용 X(대소문자 구분)
- URI 마지막에 슬래시(/)를 사용 X
- 슬래시(/)로 계층 관계를 나타냄
- 확장자가 포함된 파일 이름을 직접 포함시키지 X
- URI는 명사를 사용
기존(Web) Service와 REST API Service
- Web Service: 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환
- REST API Service
- data 처리만 하거나 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달
- View에 대해서 신경 X → Open API에서 많이 사용
API URI 설계(기존)
- 기존의 접근 방식은 GET과 POST만으로 자원에 대한 CRUD 처리
- URI에 해당 기능을 추가 작성
기능 | HTTP method | URI |
게시글 목록 조회 | GET | /board/list |
게시글 상세 조회 | GET | /board/detail?id=2 |
게시글 생성 | POST | /board/write |
게시글 수정 | POST | /board/update |
게시글 삭제 | POST | /board/delete?id=2 |
API URI 설계(REST API)
- URI는 board라는 Resource를 활용하여 식별
- HTTP method를 통해 CRUD 행위를 구분
기능 | HTTP method | URI |
게시글 목록 조회 | GET | /board |
게시글 상세 조회 | GET | /board/{id} |
게시글 생성 | POST | /board |
게시글 수정 | PUT / PATCH | /board |
게시글 삭제 | DELETE | /board/{id} |
RESTful
- REST 아키텍처 스타일을 따르는 웹 서비스를 설계하고 구현하는 방식
- 플랫폼 독립성 → REST API는 특정 언어나 플랫폼에 종속되지 않음
- 높은 성능 → REST API는 cacheable 데이터를 지원하여 데이터를 캐시에 저장하고 빠르게 접근할 수 있음
- 간결함과 명확성 → REST API는 URI와 HTTP method를 이용하여 자원과 행위를 명확하게 표현
- 표준화된 통신 → REST API는 HTTP를 통해 작동
Spring REST API
REST Client
- RESTful 웹 서비스에 HTTP 요청을 보내고 응답을 받는 프로그램 혹은 라이브러리
- HTTP 요청 전송 / 응답 수신 가능
- 대표적인 client로는 cURL, Postman, Talent API(크롬 웹스토어 설치) 등 ...
반응형