코딩하는 해달이

RESTful API 본문

개인 공부/Spring

RESTful API

코딩하는 해달 2024. 10. 21. 11:51

RESTful API란?

두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다.

API란?

애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다. 따라서 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.

클라이언트

클라이언트는 웹에서 정보에 액세스하려는 사용자이다. 클라이언트는 API를 사용하는 사람 뿐아니라 소프트웨어 시스템일 수도 있다.

리소스

리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보이다. 리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터 일 수 있다. 클라이언트에 리소스를 제공하는 시스템을 서버라고도 한다. 서비스 제공자는 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하며 웹 서비스를 제공한다.

REST란?

REST는 Representational State Transfer의 약자로 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST기반 아키텍처를 사용하면 대규모 고성능 통신을 안정적으로 지원할 수 있고 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.

REST 아키텍처 스타일의 원칙

균일한 인터페이스

모든 RESTful API의 기본이다. 이는 서버가 표준 형식으로 정보를 전송함을 의미한다. 

아키텍처 제약 조건

  1. 요청은 리소스를 식별해야함.
    (균일한 리소스 식별자 사용)
  2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있음.
    (서버는 리소스를 자세히 설명하는 메타데이터 제공)
  3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보 수신.
    (서버는 클라이언트가 리소스를 적절히 사용할 수 있는 방법에 대한 메타데이터 제공)
  4. 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신
    (서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송)

무상태

각 요청은 서로 독립적이며, 서버는 이전의 요청상태를 기억하지 않음을 의미한다. 따라서 클라이언트는 필요한 모든 정보를 요청에 포함하여야 한다.

계층화 시스템

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱 등 다양한 중간계층을 보함 할 수 있다.

캐시 가능성

서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. 따라서 RESTful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어할 수 있다.

온디맨드 코드

서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자를 지정할 수 있다. EX) 웹 사이트에서 등록 양식을 작성하면 브라우저는 잘못된 전화번호와 같은 실수를 즉시 강조 표시함 ← 서버에서 전송한 코드를 통해 수행 가능

REST API 설계 규칙

- URL 규칙

  • URI 경로에는 소문자 사용
  • 언더바(_) 대신 하이픈(-)을 사용(가독성을 위함)
  • 마지막에 슬래시(/)를 포함하지 않음
  • 행위는 포함하지 않음
    • 행위는 메서드를 사용하여 전달(GET, POST, PUT 등)
  • 파일 확장자는 URI에 포함하지 않음

- HTTP 메서드 활용

  • GET: Read(조회)
  • POST: Create (생성)
  • PUT: Update (전체 수정)
  • PATCH: Update (일부 수정)
  • DELETE: Delete (정보 삭제)

- HTTP 응답 상태 코드 활용

1xx: 정보 응답 / 2xx: 성공 응답 / 3xx: 리다이렉트 / 4xx: 클라이언트 요청 오류 / 5xx: 서버 오류

 

반응형

'개인 공부 > Spring' 카테고리의 다른 글

[Spring] Gradle이란?  (3) 2024.09.25
Comments