1. REST API란?
REST(RESTful, Representational State Transfer) 약자
HTTP URI 를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT DELETE) 를 통해 해당 자원에
대한 CRUD Operation을 적용하는 것을 의미
자원의 이름으로 구분하여 해당 자원의 상태를 교환, REST는 서버와 클라이언트의 통신 방식 중 하나
2. REST 필요성
- 애플리케이션의 분리 및 통합
- 애플리케이션의 복잡도가 증가 -> 애플리케이션을 어떻게 분리하고 통합하느냐가 주요 이슈
- 이에 자바에선 최근에는 MSA(Micro Service Architecture)와 함께 REST가 떠오르고 있는 것
- 다양한 클라이언트의 등장
- 모바일과 같은 다양한 클라이언트의 등장하면서 Backend 하나로 다양한 Device를 대응하기 위해 REST의 필요성이 증대되었다. 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다. 이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용하는 방법을 모색한 결과, REST에 관심을 가지게 되었다.
3. REST 장단점
- 장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다
- HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있다
- HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다
- 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다
- 서버와 클라이언트의 역할을 명확하게 분리한다
- 단점
- 표준이 존재하지 않는다
- 사용할 수 있는 메소드가 4가지 밖에 없다(GET, POST, PUT, DELETE)
- 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다
3. HTTP Method
- Create : 생성(POST)
- Read : 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE)
- HEAD: header 정보 조회(HEAD)
4. REST API 구성요소
- 자원(Resource): URL/URI
- 행위(Verb): HTTP Method
- 표현(Representations)
5. REST API 설계 규칙
- resource(자원)는 가급적 명사를 사용하고, 소문자를 사용한다.
- URI에 HTTP Method를 포함하지 않는다.
- URI는 '/'로 끝나지 않는다.
- _(underbar) 대신 -(dash)를 사용한다.
- 파일 확장자는 URI에 포함하지 않는다.
6. REST API 적용예시
REST 적용이전 | REST 적용 후 |
/crateBoard | POST/board |
/getBoard | GET /board |
/updateBoard/in | PUT /board/in |
/deleteBoard/in | DELETE /board/in |
파라미터 예시
GET /board?seqno=21
GET /board?seqno=21&category=free
HTTP POST , http://localhost:8080/board
{
"board":{
"title":"제목",
"content":"내용"
}
}
7. REST API 설계 시 중요항목
첫 번째, URI는 정보의 자원을 표현해야 한다.
두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
8. RESTful API
상기의 REST 제약조건을 준수하여 설계된 API를 RESTful API 라고 한다.
'IT개발정보' 카테고리의 다른 글
유튜브 개발 강좌 추천 (0) | 2023.04.05 |
---|---|
java version - major version number (0) | 2023.04.05 |
(Docker) 컨테이너 안에 vi 편집기 설치 (0) | 2023.04.03 |
ubuntu mysql 설치 및 관리 (0) | 2023.04.03 |
Docker 명령어 (0) | 2023.04.02 |