RESTful API

kimjaewon·2023년 4월 17일
0

RESTful API 란?

RESTful API
HTTP프로토콜을 통해 웹 서비스 API 설계하기 위한 아키텍처 스타일 중 하나

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

여러 아키텍처중 REST 아키텍처 스타일을 따르는 API를 REST API라고 하고 이를 사용해 만든 웹 서비스를 RESTful 웹 서비스 라고 한다
즉 REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있다
(SOAP API, GraphQL API) 등 다양한 API가 존재

API 란
응용 프로그램 간의 상호 작용을 위한 인터페이스이다
API는 다른 응용 프로그램에서 사용할 수 있는 특정 기능을 제공하는
일종의 열쇠 역할을 한다 이러한 기능은
함수, 프로시저, 클래스, 라이브러리등 다양한 형태가 있다
API를 사용하면 응용 프로그램 간의 통신이 가능해지고 다양한 기능을 쉽게 활용할 수 있다 예를 들어 일부 사이트에서 제공하는 Open API를 사용하면 다른 개발자들이 해당 사이트의 데이터를 활용해 자신의 애플리케이션을 개발할 수 있다

무상태
REST 아키텍처에서 무상태는 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법을 나타낸다 클라이언트는 임의의 순서로 리소스를 요청할 수 있고 모든 요청은 무상태이거나 다른 요청과 분리된다 이 REST API 설계 제약 조건은 서버가 매번 요청을 완전히 이해해서 이행할 수 있음을 뜻한다


작동방식 CRUD

  1. Create (POST)
    자원을 생성하기 위한 메서드
  2. Read (GET)
    자원을 조회하기 위한 메서드
  3. Update (PUT, PATCH)
    자원을 수정하기 위한 메서드
    PUT : 리소스의 모든 것을 업데이트 한다 => 새로운 자원도 생성해 서 같이 업데이트가 가능하다 / 네임, 폰, 에이지 값 을 풋으로 업데이트를 하는데 폰 값만 업데이트를 한다면 테이블에는 null 값이 들어온다
    PATCH : 리소스의 일부를 업데이트 한다. => 새로운 자원을 생성할 수 없으면 정해져 있던 값들에서만 업데이트가 가능하다
  4. Delete (DELETE)
    자원을 삭제하기 위한 메서드

장점, 차이점

RESTful 웹 서비스는 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원 한다

1. 확장성
REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적인 크기 조절이 가능하다
무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없어 서버 로드를 제거한다

2. 유연성
RESTful 웹 서비스는 클라이언트와 서버 각 부분이 독립적으로 발전할 수 있도록 분리 지원 한다
서버 애플케이션의 플렛폼 또는 기술 변경은 클라이언트 쪽에 영향을 주지 않고 애플리케이션 함수를 계층화하는 기능은 유연성을 더 향상 시켜
애플리케이션 로직을 다시 작성하지 않고도 데이터베이스 계층을 변경할 수 있다

3. 독립성
API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다 또한 통신에 영향을 주지 않고
양쪽의 기본 기술을 변경할 수 있다

REST의 본질은 다른 유형과의 비호환성을 결정한다 아키텍처가 RESTful 웹 서비스를 제공하기 위해 따라야 하는 일련의 요구 사항을 나타내는 아키텍처 스타일이다 예를 들어 SOAP 및 RPC는 메시지를 설명하는 메시징 프로토콜인데 메시지가 충족해야 하는 요구 사항(제약 사항)아키텍처 스타일과 다르다

메세지 교환 형식
API는 일반적으로 특정 메시지 형식을 사용하는데 예를 들어 SOAP는 XML을 사용한다 REST는 그런 엄격한 원칙을 따르지 않고 거의 모든 형식을 사용하여 데이터를 교환할 수 있다 JSON이 가장 인기 있다
사람이 읽을 수 있고 데이터 교환 형식을 쉽게 분석할 수 있다
JSON은 언어 독립적이며 JavaScript 이외의 모든 언어와 함께 사용할 수


동작 원리

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

개발자가 어떻게 설계 하는지에 따라 방식이 약간 다를 수 있다


profile
올라가자

0개의 댓글