amid.jungs

[Network]RESTful API 본문

etc

[Network]RESTful API

amid.jungs 2022. 3. 3. 14:48

 

Ⅰ. 개념 

REST API (= RESTful API)

• REST 아키텍처의 제약조건을 준수하는 애플리케이션 프로그래밍 인터페이스

• 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미

• HTTP URI(Uniform Resource Identifier)을 통해 자원을 명시하고 HTTP Method(POST,  GET, PUT, DELETE)를

  통해 자원에 대한 CRUD Operation을 적용하는 것

 

 

 

 

 

Ⅱ. 구성

자원 (Resource) : URL 

ex. /orders/order_date/1

 

행위(Verb) : Http Method

ex. GET, POST , PUT , DELETE

 

표현(Representaion Of Resource)

Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representaion)을 보냄

JSON, XML, TEXT 등 여러형태로 나타낼 수 있으며 대부분은 JSON으로 주고 받음

 

 

 

Ⅲ. 특징

1. Server-Client (서버-클라이언트 구조) 

RestServer : API 제공 & 비지니스 로직처리 및 저장\

Client : 사용자 인증이나 contenxt등을 직접 관리

--> 서로 의존성이 줄어듬                                                                                                                         

 

2.Stateless (무상태) 

Client의 context를 Server에 저장하지 않음

--> 세선 & 쿠키 같은 정보를 신경쓰지 않으므로 구현이 단순해짐

요청간에 클라이언트 정보가 저장되지 않으며 각 요청이 분리되어 있고 연결되어 있지 않음

                                             

                                                          

3.Cacheable (캐시처리기능)                                                                                                                                                             

클라이언트는 응답을 캐싱할 수 있어야 함

클라이언트 - 서버 간 상호작용을 부분 & 완벽히 제거하여 Scalability와 성능을 향상시킴

 

 

4.Layered System(계층화)           

Client는 REST API Server 만 호출

API Server 는 비지니스 로직을 수행하며 보안 , 로드밸런싱 , 암호화 , 사용자인증 등을

추가해 구조상 유연성을 줄 수 있음 

 

5. Code-On-Demand(코드 온디맨드 : 선택사항)

요청을 받으면 서버 -> 클라이언트로 실행 가능 코드를 전송해

클라이언트 기능을 확장해 사용

 

6. Uniform Interface(인터페이스 일관성)

URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행

 

 

Other . 세부규칙

  슬래시 구분자 ( / )는 계층관계를 나타내는데 사용한다

URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다

하이픈( - )은 URI 가독성을 높이는데 사용한다.

밑줄( _ )은 사용하지 않는다.

URI 경로에는 가급적 소문자를 사용한다.

파일 확장자는 URI에 포함하지 않는다

   대신 Accept Header를 사용

 

Comments