[코드잇 풀스택 1기] - RESTful API의 개념과 주요 제약 조건
RESTful API ?
RESTful API의 주요 개념
1. 자원(Resource)
- 서버의 데이터나 기능은 "자원"으로 표현. 각 자원은 고유한 URI로 식별한다.
2. HTTP 메서드
- RESTful API에서는 HTTP메서드를 사용하여 자원을 조작합니다.
주료 사용하는 메서드는 (GET , POST , (PUT / PATCH), DELETE)
3. 상태 비저장(Stateless)
- RESTful API는 클라이언트와 서버 간의 통신이 상태 비저장 이어야 합니다.
각 요청은 독립적이며, 요청 간에 서버는 클라이언트의 상태를 저장하지 않습니다.
따라서 요청에는 필요한 모든 정보가 포함되어 있어야 한다.
4. 표현 (Representation)
- 자원의 상태로 표현하는 방식은 JSON, XML, HTML 등 다양한 형태로 전달될 수 있다.
JSON 같은 경우는
{
"id" : 1,
"name" : "minsu"
}
이런 느낌으로 사용한다.
5. URI 설계
- URI는 자원의 위치를 나타내며, 직관적이고 이해하기 쉽게 설계해야 합니다.
예)
사용자 목록 : /users
특정 사용자 조회 : /users/1
6. HTTP 상태 코드
RESTful API에서는 각 요청에 대한 응답으로 적절한 HTTP 상태 코드를 반환합니다.
예)
200,201: 성공
400,404,500 : 오류
RESTful API의 장점
간결하고, 일관된 인터페이스 : 자원을 조작하는 방식이 http 메서드와 상태 코드로 일관되게 제공하므로, API를 사용하는 개발자가 쉽게 이해하고 사용할 수 있다.
유지보수 : 클라이언트와 서버가 독립적으로 동작하므로 서버의 변경이 클라이언트 에 영향을 주지 않는다.
RESTful의 제약 조건
1. 클라이언트- 서버 :
클라이언트와 서버는 서로 독립적으로 동작해야 하며, 각자의 역할을 명확하게 구분됩니다. 클라이언트는 사용자 인터페이스를 담당하고, 서버는 자원의 관리와 데이터 처리를 관리합니다.
2. 무상태성 :
서버는 각 요청을 독립적으로 처리하며, 클라이언트의 상태를 저장하지 않습니다. 따라서 클라이언트 상태를 저장하지 않습니다. 따라서 클라이언트의 각 요청은 필요한 모든 정보를 포함해야 하며, 요청 간에 서버는 상태를 유지하지 않습니다.
3. 캐시 가능 :
서버의 응답은 캐시 가능해야 하며, 클라이언트와 서버는 응답이 캐시 가능하지 여부를 명시해야 합니다. 이를 통해 클라이언트는 자주 사용되는 데이터에 대해 캐시를 사요할 수 있습니다.
4. 계층화 시스템 :
RESTful 시스템은 여러 계층으로 구성될 수 있으며, 각 계층은 서로 독립적으로 동작합니다. 클라이언트는 서버와 직접 통신하는지, 중간 계층을 통해 통신하는지 알 필요가 없습니다.
5. 인터페이스의 일관성 :
RESTful API는 일관된 인터페이스를 가져야 하며, 모든 자원은 동일한 방식으로 접근되고 조작되어야 합니다. RESTful API의 핵ㄱ십 제약 조건이며 다음 4가지 사항을 포함합니다.
5-1. 자원의 식별
5-2. 자원의 동작
5-3. 자원의 표현
5-4. 애플리케이션 상태로의 하이퍼미디어
6.코드온 디멘트
RESTful API는 클라이언트에 코드를 전송하여 실행할 수 있게 합니다. 이 제약 조건은 선택 사항이며, 모든 RESTful 시스템에 필수적인 것은 아닙니다.