Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

개발자

[RESTful API]개념 본문

개발자/workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)

[RESTful API]개념

GoGo개발 2023. 2. 22. 12:16
RESTful API(Representational State Tranfer API)란?

 

RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다.
REST 기반으로 서비스 API를 구현한 것이다.

 

RESTful하다는, REST를 잘 지킨것이고, REST API는 REST형식으로 설계된 API를 말한다.

따라서, RESTful API란 REST한 방식으로 프로그램간 정보 교환 등의 상호작용을 가능하게 하는 것이 RESTful API

 

 

 

API(Application Programing Interface)란?

 

어플리케이션 프로그래밍 인터페이스(API)다른 소프트웨어시스템과 통신하기위해 따라야하는 규칙을 정의 한 것이다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성합니다. 예를 들어, 근무 시간 기록 애플리케이션은 직원의 전체 이름과 날짜 범위를 요청하는 API를 표시합니다. 이 정보가 수신되면 내부적으로 직원의 근무 시간 기록을 처리하고 해당 날짜 범위에서 근무한 시간을 반환합니다.

웹API는 클라이언트와 웹 리소스 사이의 게이트 웨이라고 생각 할 수 있다.

 

클라이언트란?

 

클라이언트는 웹에서 정보에 액세스하려는 사용자입니다. 클라이언트는 API를 사용하는 사람이거나 소프트웨어 시스템일 수 있습니다. 예를 들어 개발자는 날씨 시스템에서 날씨 데이터에 액세스하는 프로그램을 작성할 수 있습니다. 또는 사용자가 날씨 웹 사이트를 직접 방문할 때 브라우저에서 동일한 데이터에 액세스할 수 있습니다.

 

리소스란?

 

리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보입니다. 리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터일 수 있습니다. 클라이언트에 리소스를 제공하는 시스템을 서버라고도 합니다. 조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공합니다. 또한 API는 특정 내부 리소스에 액세스할 수 있는 클라이언트를 결정하는 데 도움이 됩니다.

 

 

그렇다면 REST(Representational State Transfer)란?

 

REST는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다. HTTP를 잘 사용하기 위한 아키텍쳐 스타일이다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있습니다. 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있습니다.

즉 자원을 이름으로 구분하여 자원의 상태(정보)를 주고받는 모든 것을 의미한다.
REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현한다.

네트워크 상에서 클라이언트와 서버 사이의 통신 방식중 하나이다
REST의 원칙을 지키면서 API의 의미를 표현하고 쉽고, 파악하기 쉽게 하는것을 Restful 하다고 한다

 

API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있습니다. REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다. REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 합니다. RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타냅니다. 하지만 REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있습니다.

 

REST 구성요소

  1. 자원(Resource) : HTTP URI (접근할 대상)
  2. 자원에 대한 행위(Verb) : HTTP Method - GET(조회),POST(생성),PUT(수정),DELETE(삭제)* 일반적으로는 GET, POST 방식을 사용하나, REST에서는 PUT, DELETE도 사용한다.
  3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load (메시지)

더 자세하게 풀어쓰자면

  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.[GET, POST, PUT, PATCH, DELETE등과 같은 HTTP 메서드를 URI를 통해서 잘 이용하는 것, 이를테면 정보 조회나 수정은 /user 이라는 하나의 URI에 다른 메서드를 이용.]
  • 즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.
  • 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
  • CRUD Operation
    • Create : 생성(POST)
    • Read : 조회(GET)
    • Update : 수정(PUT)
    • Delete : 삭제(DELETE)
    • HEAD: header 정보 조회(HEAD)

RESTful API 작동법

 

RESTful API의 기본 기능은 인터넷 브라우징과 동일합니다. 클라이언트는 리소스가 필요할 때 API를 사용하여 서버에 접속합니다. API 개발자는 서버 애플리케이션 API 문서에서 클라이언트가 REST API를 어떻게 사용해야 하는지 설명합니다. 다음은 모든 REST API 호출에 대한 일반 단계입니다.

 

  1. 클라이언트가 서버에 요청을 전송한다. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정
  2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다
  3. 서버가 요청을 수신하고 내부적으로 처리
  4. 서버가 클라이언트에 응답을 반환한다. 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함된다. 응답에는 클라이언트가 요청한 모든 정보도 포함

REST API 요청 및 응답 세부 정보는 API 개발자가 API를 설계하는 방식에 따라 약간씩 다르다

 

REST  API 설계예시

: REST한 방식으로 데이터를 상호교환하게 설계된 API

-> HTTP를 잘사용하기위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메소드로 어떤 행위를 할것인지 표현하여 설계된 API를 말합니다.

 

1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.

 

Bad Example http://khj93.com/Running/
Good Example  http://khj93.com/run/

 

2. 마지막에 슬래시 (/)를 포함하지 않는다.

 

Bad Example http://khj93.com/test/  
Good Example  http://khj93.com/test

 

3. 언더바 대신 하이폰을 사용한다.

 

Bad Example http://khj93.com/test_blog
Good Example  http://khj93.com/test-blog

 

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

 

Bad Example http://khj93.com/photo.jpg  
Good Example  http://khj93.com/photo

 

5. 행위를 포함하지 않는다.

Bad Example http://khj93.com/delete-post/1  
Good Example  http://khj93.com/post/1

 

5. 필터를 위해 쿼리 파라미터를 사용해라 

: Resource(or Reperesentation)에 대한 정렬, 필터링, 페이징은 신규 API를 생성하지 않고 쿼리 파라미터를 활용해라.

 

 

 

RESTful API로 간주되기 위한 조건

 

또한 API가 RESTful로 간주되기 위해서는 몇가지 조건이 있는데 그 중 가장 중요한 건,

  • 클라이언트-서버 커뮤니케이션: 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않음
  • Stateless(무상태)이다.

클라이언트와 서버간 종속적이지 않다는 말입니다.

즉, 서버는 클라이언트의 정보를 저장-유지하고 있지않아, 같은 사람이보낸 정보도, 같은사람이 보냈는지 정보를 유지하고있지 않다는 말이다.

 

이말은 즉, 클라이언트가 요청시 마다, 자기 정보를 보내야하고, 서버는 받은 정보로 클라이언트의 정보를 확인합니다.

따라서,  

  • 멀티플랫폼 지원이 용이하고,
  • Stateless한 RESTful API는 Client의 요청(호출)을 어느 Server라도 동일하게 처리할 수 있고
  • 즉, 어떤 Server라도 Client들의 요청에 응답할 수 있다는 것은, 서버 환경이 분산되었든 아니든, Client쪽에서는 Server쪽에 신경 쓸 필요 없이 API 호출만 하면 원하는 결과를 받을 수 있다는 점에서 RESTful API가 활용되는 것입니다.
REST API의 장점

 

1. 보기 좋다. 

  • URL만 보고 어떤 자원에 접근할 것인지, 메소드를 보고 어떤 행위를 할지 알 수 있기 때문에, 개발을 할때 용이하다

2. 자원을 아낄 수 있다.

  • 1개의 URI로 4개의 행위(CRUD)를 명시할 수 있기 때문에, 굉장히 효율적이다

3. stateless한 상태를 유지할  수 있다.(제일 중요)

  • REST API의 가장 큰 특징으로, 다양한 브라우저와 모바일에서 통신할 수 있도록 한다
  • 클라이언트가 서버에 종속적이지 않아도 되기때문에, scale out한 상황에서도 용이하다.

 

한줄 정리 RESTful API란

REST한 방식으로 클라이언트와 서버간 상호 데이터 교환을 하는 API이며, 서로간에 stateless한 특징을 가지는 API이다

 

 

참고

https://aws.amazon.com/ko/what-is/restful-api/

 

RESTful API란 무엇인가요? - RESTful API 설명 - AWS

Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애

aws.amazon.com

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

 

좀더 쉽게 

https://thalals.tistory.com/284

진정한 의미의 RESTfulAPI

https://wonit.tistory.com/454

 

HATEOAS를 모르면 당신이 알고 있는 REST API는 REST API가 아니라고 장담할게요.

이 글은 그런 REST API 로 괜찮은가? 의 이응준 개발자님의 발표 자료에 여러 부분을 차용하였습니다. REST API란 무엇일까 난 지금까지 REST API에 대해서 상당 부분을 오해하고 있었다. REST API라고 함

wonit.tistory.com

https://prohannah.tistory.com/156

 

RESTful API를 위한 6가지 원칙과 네이밍

REST와 RESTful REST는 REpresentational State Transfer 의 약어로, 클라이언트과 서버가 데이터를 주고 받는 방식에 대한 아키텍처 스타일이다. REST에는 여섯 가지의 기본 원칙이 있고, 이 가이드를 준수한

prohannah.tistory.com