새소식

CS/WEB

[CS WEB] REST API

  • -

1. API란 무엇인가?


컴퓨터의 기능을 실행시키는 방법을 의미한다. 컴퓨터에 무언가를 출력하는 방법은 아래와 같다.

python : print('hello')
javascript : document.wtirte('hello');

이 함수 하나하나가 API다.

 

 

 

 

 

2. REST API?


REST API도 마찬가지로 컴퓨터를 실행시킨다. 정확히는 "남의 컴퓨터"를 실행시킨다. 인터넷과 웹을 통해서 나의 컴퓨터를 제어할 때 어떻게하면 시행착오를 줄이고 더 좋은 API를 만들수 있을까에 대한 결과물이라고 한다.

REST API : Representational State Transfer

 

 

 

3. REST API의 규칙


REST API는 자원, 행위, 표현으로 구성되어 있고, 반드시 지켜야하는 가장 중요한 규칙 두 가지가 있다.

첫번째, URI는 정보의 자원을 표현해야한다.

두번째, 자원에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.

3-1 URI는 자원을 표현해야한다.

자원의 이름은 동사보다는 명사를 사용한다. URI는 자원을 표현하는데 중점을 두어야하고, get 같은 행위에 대한표현이 들어가면 안된다.

# bad
GET /getTodos/1
GET /todos/show/1

# good
GET /todos/1

3-1 자원에 대한 행위는 HTTP Method인 GET, POST, PUT, DELETE등으로 표현한다.

# bad
GET /todos/delete/1

# good
DELETE /todos/1

# bad
GET /members/show/1     

# good
GET /members/1
행위 내용
POST POST를 통해 해당 URI를 요청하면 리소스를 행성합니다.
GET GET를 통해 해당 리소스를 조회합니다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다.
PUT PUT를 통해 해당 리소스를 수정합니다.
DELETE DELETE를 통해 리소스를 삭제합니다.

 

 

 

4. REST API 예시


" 상품명이 진라면인 상품생성한다” 라는 호출이 있을 때,

상품”은 생성되는 자원 (resource)

생성한다”라는 행위는 메서드 (post)

"상품명이 진라면인 상품"은 메시지 ({"name":"진라면","price":"1000"})로 표현할 수 있다.

HTTP POST, http://localhost/products/ { "products": { "name":"진라면", "price":"1000" } }

 

 

 

5. REST API 특징


1. Stateless : HTTP 프로토콜을 기반으로 하여 웹 표준을 최대한 활용하는 방식이다. REST API도 마찬가지로 상태 정보를 따로 저장하고 관리하지 않는다. 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않고 API서버는 들어오는 요청만을 단순히 처리한다. 이에 따라 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

2. Uniform Interface: 모든 자원에 대해 고유한 URI(통합자원식별자:Uniform Resource Identifier를 부여해 메소드를 붙여 활용합니다.

3. 캐시 가능 : 1의 특징에서 설명했듯 웹표준을 그대로 사용했기 때문에 웹에서 사용하는 인프라를 그대로 활용할 수있다. 따라서 HTTP가 가진 캐싱 기능도 사용할 수 있다.

4. client-server 구조 : REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 됩니다.

 

 

 

 

 

 

출처

https://poiemaweb.com/js-rest-api

https://meetup.toast.com/posts/92

https://creamilk88.tistory.com/184

'CS > WEB' 카테고리의 다른 글

[CS WEB] OAuth  (1) 2022.09.20
[CS WEB] 웹 서버와 WAS  (0) 2022.09.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.