REST API/RESTful API

2023. 11. 27. 22:04·BackEnd/Django

RESTful API

REST 정의

  • Representational State Transfer
  • 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하는 통신 방식
  • 자원(resource)의 표현(representation)에 의한 요청 정보 전달
    • 자원의 표현: 자원을 표현하기 위한 이름
  • JSON 또는 XML 데이터로 응답

 

REST 개념

  • HTTP URI를 통해 자원(resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 기능을 적용하는 것
  • 웹 사이트의 이미지, 텍스트, DB 등 모든 자원에 HTTP URI를 부여함

 

REST API

API(Application Programming Interface): 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙

  • 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 하는 것

 

REST API 정의

REST 아키텍처 스타일 디자인 원칙을 준수하는 API

  1. 균일한 인터페이스(uniform interface)
  2. 클라이언트-서버 디커플링(client-server)
  3. 무상태(stateless)
  4. 캐싱 가능성(cache)
  5. 계층 구조 아키텍처(layered system)
  6. 코드 온디맨드(code-on-demand)

 

RESTful API 설계 규칙

  1. URI는 정보의 자원을 표현해야 한다.
  2. 자원에 대항 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
  3. 슬래시(/) 구분자는 계층 관계를 나타낸다.
  4. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.(Django에서는 붙이는 것을 권장)
  5. 하이픈(-)은 URI 가독성을 높이는 데 사용한다.
  6. 밑줄(_)은 URI에 사용하지 않는다.
  7. URI 경로에는 소문자가 적합하다.
  8. 파일 확장자는 URI에 포함하지 않는다.

 

RESTful 이란

REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 함

 

RESTful의 목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
  • RESTful 한 API 구현 목적은 성능 향상이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것
  • 성능이 중요한 상황에서는 굳이 RESTful 한 API를 구현할 필요 없음
DRF URI  Method  Action
/api/post GET list(select all)
/api/post/99/ GET retrieve
/api/post POST create
/api/post/99/ PUT update
/api/post/99/ DELETE delete
/api/post/99/ PATCH partial_update

 

 

Django REST Framework

Django REST Framework 설치

pip instal djangorestframework

 

앱 등록

# settings.py
INSTALLED_APPS = [
		...
    "rest_framework",
]

 

 

 

참고

  • KT AIVLE SCHOOL 수업자료
  • https://www.django-rest-framework.org/api-guide/serializers/#serializers
  • https://wikidocs.net/197562
  • https://aws.amazon.com/ko/what-is/restful-api/
  • https://www.ibm.com/kr-ko/topics/rest-apis
저작자표시 (새창열림)
'BackEnd/Django' 카테고리의 다른 글
  • Django | VIEW ON SITE 클릭 시 발생하는 http 오류
  • Django | django-alluth로 구글 로그인 기능 구현하기
  • Django | MarkdownX로 마크다운 적용하기
  • Django | crispy-forms 사용하기(bootstrap5)
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (244)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (45)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
REST API/RESTful API
상단으로

티스토리툴바