221013_[토픽클리핑 및 독서] API 및 DRF

Csw·2022년 10월 13일
0

Django

목록 보기
12/14
post-custom-banner

🌞 API란

  • API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘

예시
기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있을 때, 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시


API의 의미

  • APIApplication Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말
  • API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어
  • 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다.
  • 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의함.
  • API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 포함되어 있음.

API 작동 방식

  • API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 설명됨.
  • 클라이언트 : 요청을 보내는 애플리케이션
  • 서버 : 응답을 보내는 애플리케이션
    • 날씨 예에서 기상청의 날씨 데이터베이스는 서버이고 모바일 앱은 클라이언트에 해당.

API가 생성된 시기와 이유에 따라 API는 네 가지 방식으로 작동 가능.

📋 SOAP API

  • API는 단순 객체 접근 프로토콜을 사용
  • 클라이언트서버XML을 사용하여 메시지를 교환
    • 과거에 더 많이 사용되었으며 유연성이 떨어지는 API

📋 RPC API

  • API를 원격 프로시저 호출이라고 함.
  • 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송

📋 Websocket API

  • Websocket APIJSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발
  • WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원
  • 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적

📋 REST API

  • 오늘날 웹에서 볼 수 있는 가장 많이 사용되고 유연한 API

  • 클라이언트가 서버에 요청을 데이터로 전송
  • 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환

🌞 REST API

  • RESTRepresentational State Transfer의 줄임말
    • REST : 클라이언트가 서버 데이터에 액세스하는 데 사용할 수 있는 GET, PUT, UPDATE, DELETE 등의 함수 집합
  • 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환

  • REST API의 주된 특징은 무상태
    • 무상태는 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미
  • 서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사함.
  • 서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터

✅ REST API의 이점

REST API는 다음과 같은 네 가지 주요 이점을 제공

1. 통합

  • API는 새로운 애플리케이션을 기존 소프트웨어 시스템과 통합하는 데 사용됨.
  • 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 향상됨.
  • API를 사용하여 기존 코드를 활용 가능.

2. 혁신

  • 새로운 앱의 등장으로 전체 산업이 바뀔 수 있음.
  • 기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원해야 함.
  • 전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행 가능.

3. 확장

  • API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회를 제공
    • 예를 들어 지도 API를 사용하면 웹 사이트, Android, iOS 등을 통해 지도 정보를 통합 가능.
  • 어느 기업이나 무료 또는 유료 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여 가능

4. 유지 관리의 용이성

  • API는 두 시스템 간의 게이트웨이 역할을 함.
  • API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야 함.
  • 이렇게 하면 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않음.

✅ REST API 보호 방안

모든 API는 적절한 인증 및 모니터링을 통해 보호되어야 함.

REST API를 보호하는 두 가지 주요 방법

1. 인증 토큰

  • 인증 토큰은 사용자에게 API 호출을 수행할 수 있는 권한을 부여하는 데 사용됨.
  • 인증 토큰은 사용자가 자신이 누구인지 확인하고 해당 특정 API 호출에 대한 액세스 권한이 있는지 확인
    • 예를 들어, 이메일 서버에 로그인하면 이메일 클라이언트는 보안 액세스를 위해 인증 토큰을 사용

2. API 키

  • API 키는 API를 호출하는 프로그램 또는 애플리케이션을 확인

    • 즉, 애플리케이션을 식별하고 애플리케이션에 특정 API 호출을 수행하는 데 필요한 액세스 권한이 있는지 확인
  • API 키는 토큰만큼 안전하지 않지만 사용량에 대한 데이터를 수집하기 위해 API 모니터링을 허용함.

    • 다른 웹 사이트를 방문할 때 브라우저 URL에서 긴 문자열과 숫자를 본 적이 있을 것임.
    • 이 문자열은 웹 사이트가 내부 API 호출을 수행하는 데 사용하는 API 키임.

🌞 Django REST Framework

Django vs Django REST Framework

  • 기존의 DJango 프로젝트 : 기존 자체적인 웹 템플릿에게 바로 데이터를 전달
  • Django REST Framework를 사용 시,JSON과 같은 양식으로 다양한 플랫폼의 클라이언트에게 데이터를 제공해줄 수 있는 API 서버 프로젝트가 만들어지게 되는 것

Django REST Framework

  • Django를 기반으로 REST API 서버를 만들기 위한 라이브러리

  • API는 웹 뿐만 아니라 앱과 같은 다양한 플랫폼의 백엔드 서비스를 위해 JSON 과 같은 규격화된 데이터를 제공.

  • DJango REST Framework는 얻디까지나 Django를 기반으로 한 라이브러리이기 때문에 전반적으로 Django의 개발 흐름을 따라감.

    • REST API가 되기 위해 달라지는 부분들이 조금 있음.
      DJango REST Framework 학습 시, 그 부분이 무엇인지에 초점을 두고 정리하고 숙지하는 과정을 반드시 거쳐야 함!!



🌞 REF

Site

AWS : RESTful API란 무엇입니까?

Book

백엔드를 위한 Django REST Framework with 파이썬

✅ 추가 학습 예정

REST API의 이해와 설계 #1-개념 소개
Django Rest Framework

post-custom-banner

0개의 댓글