[Frontend] API란? Restful API란?

박감자·2024년 11월 13일

1. API란?

Application Programming Interface, 소프트웨어의 간의 대화(통신)할때 필요한 규칙을 정의한 것입니다. 즉, 다른 프로그램과 통신을 위해서 어떠한 방식으로 요청을 보내야하는지, 어떻게 받아오는지에 대한 규칙들의 모음입니다.

클라이언트와 리소르 간의 길을 이어주는 게이트웨이라고도 생각할 수 있습니다.

클라이언트

정보를 요청하는 입장을 클라이언트 (사용자)라고 합니다.

리소스

서버나 혹은 에플리케이션에서 클라이언트로 전달하는 정보입니다.

2. REST란?

Representational State Transfer(REST) 는 API 작동 방식에 조건을 부과하는 소프트웨어 아키텍처입니다. 복잡한 네트워크 통신에 적합하며 고성능 통신을 안정적으로 지원합니다.

  • REST 아키텍처 스타일을 따르는 API → REST API
  • REST 아키텍처를 구현하는 Web Service → RESTful Web Service

3. REST 아키텍처 원칙

  • 균일한 인터페이스 : 표준 형식으로 정보를 전함을 나타냄, 4가지 제약 조건이 존재
    • 리소스 식별을 위한 균일한 리소스 식별자를 사용합니다
    • 클라이언트가 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가집니다. 따라서 서버는 리소스를 자세히 설명하는 메타데이터를 전송합니다.
    • 클라이언트는 표현을 추가로 처리하는 방법 정보를 수신, 이를 위해 서버에서 리소스를 사용할 수 있는 방법에 대한 명확한 메세지 전송합니다. (메타데이터에 포함)
    • 클라이언트가 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송합니다.
  • 무상태 : 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법
  • 계층화 시스템 : 클라이언트의 요청을 서버에 보내고, 그 서버에서 다른 서버로 요청을 보낼 수 있습니다. 이러한 계층을 클라이언트에게 보이지 않는 상태를 유지합니다.
  • 캐시 가능성 : 서버 응답 시간 개선을 위해 응답을 저장하는 프로세스인 캐싱을 지원합니다.
  • 온디맨드 코드 : 서버가 소프트웨어 코드를 클라이언트에게 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있습니다.

4. RESTful API의 이점

  • 확장성 : REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있습니다.
  • 유연성 : 완전한 클라이언트-서버 분리를 지원하여 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순하게 분리시킬 수 있습니다.
  • 독립성 : API 설계에 영향을 주지 않으면서 어떤 언어로든 클라이언트 및 서버 애플리케이션을 모두 작성 할 수 있습니다.

5. 작동 원리 (REST API 호출에 대한 일반 단계)

  1. 서버에 요청 전송 (API 문서 형식에 따라 요청)
  2. 서버에서 클라이언트 인증하고 해당 요청의 권한이 있는지 확인
  3. 요청을 내부에서 처리함
  4. 서버가 클라이언트에게 응답을 반환, 응답 성공 여부도 메타데이터에 포함.

6. RESTful API 클라이언트 요청에는 무엇이 포함되어 있나

  • 고유 리소스 식별자 : 요청 URL이 이에 해당
  • 메서드 : 리소스에 수행해야 하는 작업을 서버에 알려주는 것
    • GET - 정보 가져오기 (요청하기)
    • POST - 서버로 데이터 전송
    • PUT - 서버의 기존 데이터 업데이트
    • DELETE - 리소스 제거
  • HTTP 헤더 = META DATA
    • 데이터 : HTTP 메서드가 성공적으로 작동하기 위한 데이터 포함
    • 파라미터 : 수행해야 할 작업에 대한 자세한 정보
      • URL 세부정보를 지정하는 경로 파라미터
      • 리소스에 대한 추가 정보를 요청하는 쿼리 파라미터
      • 클라이언트를 빠르게 인증하는 쿠키 파라미터

7. RESTful API 인증 방법

요청에 대한 응답을 받기 위해서는 클라이언트 인증 정보를 먼저 확인해야 합니다.

  • HTTP 인증
    • 기본 인증 - 요청 헤더에 사용자 이름과 암호를 넣어 전송 (base64로 인코딩)
    • 전달자 인증 - 토큰 (암호화된 문자열) 전달자에 대한 엑세스를 제어
  • API key - 고유하게 생성된 값을 클라이언트에게 할당하여 사용자가 이를 사용하여 본인을 인증함 [단점 : 보안 취약]
  • OAuth - 암호와 토큰의 결합, 암호 요청 후 토큰을 요청하여 인증하는 방

8. RESTful API 서버 응답

상태 표시줄, 메세지 본문, 그리고 헤더를 포함하여 응답을 해야합니다.

  • 상태 표시줄 - 3자리 상태 코드
    • 200: 일반 성공 응답
    • 201: POST 메서드 성공 응답
    • 400: 서버가 처리할 수 없는 잘못된 요청
    • 404: 리소스를 찾을 수 없음
  • 메세지 본문 - 요청한 리소스
  • 헤더 - 메타데이터 포함

참고자료

  1. https://aws.amazon.com/ko/what-is/restful-api/
  2. https://youtu.be/RI1LcuNgNj4?si=LK4xVys2h8q0fZd4
  3. https://youtu.be/fB3MB8TXNXM?si=BXcAujV_tW1ZlzEC
profile
코딩하는 감자

0개의 댓글