ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] REST framework
    공부/Django 2020. 8. 4. 20:01

     

    필요성

    설명이 잘되어 있어서 첨부합니다!

    https://medium.com/@whj2013123218/django-rest-api%EC%9D%98-%ED%95%84%EC%9A%94%EC%84%B1%EA%B3%BC-%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-a95c6dd195fd

     

    프론트 개발자와 협력하여 프로젝트를 진행하다 보면 REST API의 필요성을 느끼는 순간이 분명 온다. 가령, 프론트 개발자가 React JS를 쓰려고 한다면 정보 송수신을 어떻게 할 것인가? 프론트로부터 정보를 받고 데이터베이스에 저장하는 것은 기존의 방법으로 할 수 있겠지만 정보를 전달하려면 REST API를 써야 한다. 이때는 Django Rest Framework(DRF)를 사용하여 코드를 작성해야 한다.

     

    처음에는 이 과정이 귀찮을 수 있다. 사실 기존에 있던 코드를 탈바꿈하는 것을 누가 반기겠는가? 하지만, 현재 그 과정을 겪고 REST API를 사용하여 프로젝트를 진행하고 있는 일인으로서 귀찮음에 대한 대가는 충분히 크다고 말하고 싶다.

     

    REST API를 활용하지 않는다면 프론트와 백엔드의 완전한 분리가 불가능하다. 

     

     

    URL을 바라보는 측면 <RPC 와 REST>

    url은 웹 클라이언트에서 호출한다는 시점에서 보면, 웹 서버에 존재하는 애플리케이션에 대한 API 라고 할 수 있다.

     

    API의 명명 규칙을 정하는 방법 두 가지 RPC , REST

     

    RPC

    클라이언트가 네트워크 상에서 원격에 있는 서버가 제공하는 API 함수를 호출하는 방식

     

    URL 설계 == API 설계

    URL의 경로 API 함수명
    쿼리 파라미터 함수의 인자

     

    URL 경로가 대부분 동사

    http://kimgaegul.tistory.com//search?q=test&debug=true

    REST = Representational State Transfer

    웹 서버에 존재하는 요소들을 모두 리소스라고 정의하고 URL을 통해 웹 서버의 특정 리소스를 표현한다.

    리소스는 시간이 지남에 따라 상태가 변할 수 있다.

    -> 데이터의 교환을 리소스의 상태의 교환으로 간주

     

    리소스에 대한 조작은 HTTP 메소드로 구분

    -> GET, POST, PUT, DELETE 등

     

    URL 전송 == 웹 서버의 있는 리소스 상태에 대한 데이터 주고 받기

    http://kimgaegul.tistory.com//search//test

    • 자원의 표현에 의한 상태 전달
    • HTTP를 이용해 통신하는 네트워크상에서 정한 약속
    • 분산 하이퍼미디어(웹, 앱 등) 시스템을 위한 소프트웨어 설계 형식

    자원 : 인터넷에서 제공하고 얻을 수 있는 모든 것

    Representational : 자원을 대표하는 단어 or 식별자료

    State Transfer : 자원의 상태를 전송하는 방법

     

    • 하위 호환을 깨뜨리지 않고 독립적 발전, (일일이 패치버전이 나온 것을 알려주지 않을 수 있음 )

     REST 설계 조건(필요충분조건)

    1. Sercer - Client

    2. STATELESS : 클라이언트의 이전 상태를 기록하지 않는 연결 방식( http가 대표적)

    3. Cache

    4. Uniform Interface

    5. Layered System

    6. Code-On-Demand : 자바스크립트처럼 서버와 같은 원격장소에서 옴

     

    API

    Application Programming Interface

    이런 형식으로 주고받겠다는 '형식' = api 문서

     

    REST API

    REST 아키텍쳐 스타일을 따르는 API

    =설계 조건을 잘 지키는 API

     

    설계 조건을 잘 지킬까?

    `NONO`

    why 안지켜?

    - Json을 사용하기 떄문

    - Json 모든 태그가 만들어져 있는 것도 아님, 만든 이가 정의하기 나름

     

    좀 더 자세하게 아래가 지켜지지 않기 때문에 REST 설계 조건을 충족하지 못한다.

     

    4. Uniform Interface : 일관된 인터페이스를 지켜야 한다.

    self-descriptive message

    메세지는 그 하나만으로 모든 것이 설명되어야 한다.

     

    예) 목적지, 송신지, 어떤 언어, 어떤 문법, 어떻게 읽을 지

    JSON : HOST 도메인, Content type 헤더, json 명세 등등 안지킴

     

    HATEOAS

    애플리케이션의 상태는 하이퍼링크를 이용해서 전이되어야한다.

    예측가능성, 투명한 정보 전이

     

     

Designed by Tistory.