티스토리 뷰

Network

[Network] RESTful API

PeonyF 2023. 3. 9. 00:10
반응형

REST(Representational State Transfer)ful API :  REST형식의 API

자원(resource)의 표현(representation) 에 의한 상태 전달

 

*API란?

API란 "Application Programming Interface"의 약자

응용 프로그램이 다른 응용 프로그램과 상호 작용할 수 있도록 인터페이스를 제공하는 소프트웨어 기술

API는 소프트웨어 컴포넌트 간의 상호 작용을 가능하게 하며, 프로그래머가 응용 프로그램을 개발할 때 다른 프로그램의 기능을 활용할 수 있도록 해준다.

 

REST 구성

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

Resource

자원 : 데이터가 리소스(Resource)라는 개념으로 표현 ex.사용자 정보, 상품 정보, 주문 정보

 

URI (Uniform Resource Identifier)

리소스를 식별하기 위한 고유한 식별자로 URI를 사용

ex. https://example.com/users/123

* 왜 URI가 필요한가?

URI는 자원을 나타내는 문자열.

RestAPI는 URI를 사용하여 클라이언트가 서버에서 제공하는 자원에 접근할수있도록 한다.

URI를 사용하여 클라이언트가 자원을 식별하고 서버에서 해당자원을 검색할 수 있다.

 

HTTP 메서드

HTTP 메소드는 자원에 대한 작업을 수행하기 위해 사용됩니다.

-> GET, POST,PUT,DELETE

 

 

표현(Representation)

RESTful 웹 서비스에서는 자원의 상태를 표현하기 위해 다양한 표현 방법을 사용

ex, JSON, XML 등의 형식으로 자원의 상태를 표현

 

 

상태

RESTful 웹 서비스에서는 클라이언트와 서버 간에 상태 전이(State Transfer)가 이루어진다.. 클라이언트는 HTTP 요청을 통해 서버에 요청을 보내고, 서버는 HTTP 응답을 통해 클라이언트에게 결과를 반환한다.

ex.

  • 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
  • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
  • 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

 

*참고 CRUD 

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)

 

REST 특징

  • client-server
  • stateless
클라이언트의 모든 요청에는 서버가 요청을 완료하는 데 필요한 모든 데이터가 포함되어야 합니다.
각 요청은 독립적으로 호출됩니다.
  • cache
유사한 요청에 대한 데이터를 재활용하려면 응답 데이터를 캐시할 수 있어야 합니다. 
이렇게 하면 클라이언트-서버 상호 작용이 줄어들어 성능이 향상되고 시간이 절약됩니다.
  • uniform interface
REST API에는 시스템 아키텍처를 단순화하고 각 부분이 독립적으로 발전할 수 있는 균일한 인터페이스가 필요

  • layered system
각 계층이 후속 계층 외부에서 상호 작용할 수 없는 구성 요소인 클라이언트-서버 시스템에 추가 계층이 있음.
이러한 계층은 보안, 부하 분산 및 확장성과 같은 추가 기능을 제공할 수 있습니다.

  • code-on-demand (optional)
정적 XML 또는 JSON 데이터를 반환하는 것 외 서버가 실행 가능한 코드를 제공-> 클라이언트 기능 확장 허용

 

RESTful API 쓰는 이유

  • 플랫폼 독립성 : HTTP 프로토콜 기반으로 하기 때문에 특정 플랫폼에 종속되지 않는다 -> 다양한 플랫폼에서 구현,사용 가능
  • 확장성 : 리소스 단위로 설계가 되므로 필요한 경우 새로운 리소스를 추가 -> API를 더욱 유연하게 해준다.
  • 간결성 : HTTP 메서드를 사용하여 데이터를 처리하기때문에 이해하기 쉽다.
  • 캐시처리 : HTTP의 캐시처리 기능을 활용할 수 있기 때문에 빠른 성능 보장
  • 보안성 : HTTPS를 사용하여 데이터를 암호화하고 보호
  • 다양한 포맷 지원 : JSON,XML,HTML등 다양한 포맷을 지원하여 데이터를 다양한 형태로 전송할 수 있다.

 

RESTful API 와 REST의 차이

REST API :  REST 아키텍처 스타일을 따르지 않으면서 RESTful API처럼 보이는 API

RESTful API :  REST 아키텍처 스타일을 엄격하게 따르는 API

 

REST API

ex. GET 메소드를 사용하여 자원을 생성하거나, DELETE 메소드를 사용하여 자원을 조회하는 경우-> 문제 발생

(원래는 POST를 사용하여 자원을 생성, GET를 사용하여 자원을 조회)

 

Restful API

RESTful API는 자원을 URI로 표현

->  HTTP 메소드를 사용하여 자원에 대한 작업을 수행

-> 자원의 상태를 표현(JSON, XML 등)

 

 

*출처

https://lo-victoria.com/a-deep-look-into-restful-apis

http://www.incodom.kr/RestFul_API

https://sidepower.tistory.com/408

https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80

반응형

'Network' 카테고리의 다른 글

[Network] URL vs UR vs URN  (0) 2023.03.02
[Network] 브라우저에 url을 입력하면 어떻게 되는가?  (0) 2023.03.02
[Network] HTTP 개념  (0) 2020.04.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함