티스토리 뷰
REST(Representation State Transfer, 자원의 상태 전달)
- 웹에 존재하는 모든 자원을 고유이름(URI, Uniform Resource Identifier)으로 구분하여 해당 자원의 상태를 주고받는 모든것
- 자원(Resource - URI), 행위(Verb - HTTP Method), 표현(Representation)
- Web Site의 text, image 등과 같은 모든 자원에 고유한 ID(HTTP URI)를 부여
- Json을 통하여 데이터를 주고받는것이 일반적이다.
- Web의 기존기술, HTTP를 그대로 활용하는 Architecture
- Client ↔ Server 간 통신 방식 중 하나이다.
- CURD
▪ Create : 생성(POST)
▪ Read : 조회(GET)
▪ Update : 수정(PUT)
▪ Delete : 삭제(Delete)
▪ HEAD : header 정보 조회(HEAD)
REST의 특징
- Client, Server가 서로 독립적으로 분리 되어 있어야 한다.
- Interface 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화하여 작은 단위로 분리하여, Client, server가 독립적으로 개선 될 수 있어야 한다.
- Stateless : 작업을 위한 상태정보를 저장, 관리하지 않는 무상태성이다.
- Cacheable : HTTP를 사용할 수 있으므로 캐싱기능을 적용할 수 있어햐 한다.
- Code on Demand(Optional) : Java applet, JS, Flash 등 특정 기능을 Server로부터 Client가 전달받아 코드를 실행할 수 있어야 한다.
1. 자원의 식별
웹 기반의 REST에서는 리소스 접근할때 URI를 사용한다
Resource : user
식별자 : 100
2. 메시지를 통한 리소스 조작
HTML, XML, JSON, TEXT 등을 통하여 데이터 전달
어떤 데이터타입인지 알려주기 위해 HTTP Header부분에 content-type을 통해 데이터 타입을 지정할 수 있음.
리소스 조작을 위해 데이터 전체를 전달하지 않고, 메시지로 전달.
3. 자기 서술적 메시지
요청하는 데이터가 어떻게 처리되어져야 하는지 충분한 데이터를 포함할 수 있어야 함.
HTTP에서는 HTTP Method와 Header정보, URI의 포함되는 정보로 표현할 수 있음.
REST API 설계
URI 정보의 자원을 표현
자원의 행위는 HTTP Method로 표현
HTTP Method → GET, POST, PUT, DELETE
GET | Read, 리소스 조회, URI가 가진 정보를 검색하기 위해 Server에 요청 |
POST | Create, 리소스 생성, Client에서 Server로 정보를 전송 |
PUT | Update, 리소스 갱신 |
DELETE | Delete, 리소스 삭제 |
자원의 행위는 HTTP메소드로 표현할 것
슬래시 문자(/)는 계층관계를 나타낼 때 사용
URI의 마지막에는 슬래시를 포함하지 않을 것
_를 사용하지 않을 것, 하이픈(-)을 사용할 것
소문자를 사용할 것
URI에 파일 확장자를 포함시키지 않을 것
그 외 담지 못한 정보들은 URI의 메시지를 통하여 표현
HTTP 응답 코드
100 - Client의 요청을 정상적으로 받았으며 계속 진행함
200 - Client의 요청을 정상 수행
201 - Client가 요청한 Resource생성(POST)을 성공적으로 수행
400 - Client의 요청이 부적절할 경우
401 - Client가 인증되지 않은 상태에서 보호된 Resource를 요청했을 경우
404 - Client가 유저의 인증과 상관없이 응답하지 못할(않할) Resource를 요청했을 경우
405 - Client가 요청한 Resource에서 사용불가능한 Method를 이용했을 경우
301 - Client가 요청한 Resource에 대한 URI가 변경 되었을 경우(응답시 변경된 URI 전송)
304 - Client의 Cache값으로 Server에 이전에 남아있는 값과의 병행으로 해당 페이지를 읽을 수 없음.
500 - Server문제가 발생하여 응답할 수 없을 상태일 경우
4. Application 상태에 대한 엔진으로써 하이퍼미디어
REST API를 개발할때 단순하게 Client요청에 대한 데이터만 응답하는것이 아닌 관련된 리소스에 대한 Link정보까지 같이 포함되어져야 함.
'Computer Science' 카테고리의 다른 글
TCP/IP, UDP (0) | 2021.07.16 |
---|---|
Web Socket, 웹 소켓 (0) | 2021.06.06 |
Compile, Interpret (0) | 2021.04.09 |
[Architecture] 부하 분산(Load Balancing) (0) | 2021.03.28 |
자료구조(Data Structure) (0) | 2021.03.12 |