Django & RestAPI

Heejin Ryu·2021년 7월 24일
0

API : 프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스

WebAPI

  • 웹 어플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
  • 현재 웹 개발은 추가로 직접 모든 것을 개발하지 않고 여러 Open API를 가져와서 활용하는 추세

"프로그래밍을 통한 요청에 JSON을 응답하는 서버를 만들자"

RestAPI

-> REpresentational State Transfer

REST

  • 웹 설계 상의 장점을 최대한 활용 할 수 있는 아키텍쳐 방법론
  • 네트워크 아키텍쳐 원리의 모음
    - 자원을 정의
    • 자원에 대한 주소를 지정하는 방법
  • REST 원리를 따르는 시스템 혹은 API를 RESTful API라고 하기도 함.

즉, 자원과 주소를 구성하는 방법이다.

REST 구성

  1. 자원 (URI)
  2. 행위 (HTTP Method)
  3. 표현 (Representations)
  1. URI
  • Uniform Resource Identifier
  • 통합 자원 식별자
  • 인터넷의 자원을 나타내는 유일한 주소
  • 인터넷에서 자원을 식별하거나 이름을 지정하는데 사용되는 간단한 문자열.
  • 인터넷
  • 하위개념: URL, URN
  1. URL
  • Uniform Resource Locatopr
  • 통합 자원 위치
  • 네트워크 상에 자원이 어디있는지 주소를 알려주기 위한 약속
  • 자원은 HTML페이지, CSS 문서, 이미지 등이 될 수 있음
  • '웹주소' 또는 '링크'라고도 불림
  1. URN
  • Unirom Resource Name
  • 통합 자원 이름
  • URL과 달리 자원의 위치에 영향을 받지 않는 유일한 이름 역할을 함.

URN은 자원의 ID를 정의하고, URL은 자원을 찾는 방법을 제공

URI 구조

URI, URN

  • URI는 크게 URL과 URN으로 나눌 수 있지만, URN을 사용하는 비중이 매우 적기 때문에 URL은 URI를 통칭하는 말로 사용하긴 한다.

URI 설계 주의사항

  • 밑줄(_)이 아닌 하이픈(-) 을 사용
  • 소문자 사용
  • 파일 확장자는 포함시키지 않음.

HTTP(HyperText Transfer Protocol)

  • HTML 문서와 같은 자원들을 가져올 수 있도록 해주는 프로토콜
  • 웹에서 이루어지는 모든 데이터 교환의 기초
  • 요청 : 클라이언트에 의해 전송되는 메시지
  • 응답 : 서버에서 응답으로 전송되는 메시지
  • HTTP 특징:
    • 비연결 지향
    • 무상태(stateless)
      • 접속이 끊어지면 클라이언트와 서버 간의 통신이 끝나며 상태를 저장하지 않음.( ex 로그인) -> 쿠키와 세션을 사용한다. 매 요청마다 쿠키를 계속해서 보내주는 것.

HTTP Method

  • 자원에 대한 행위
  • 의미론 적으로 행위를 규정하기 때문에 '실제 그 행위 자체가 수행됨'을 보장하진 않음
  • HTTP verbs라고도 함.
  • 즉 HTTP는 HTTP Method를 정의하여 주어진 자원에 수행하길 원하는 행동으로 나타냄.

HTTP Method 종류

GET

  • 특정 자원의 표시를 요청하며, 오직 데이터를 받기만 함

POST

  • 서버로 데이터를 전송하며, 서버에 변경사항을 만듦.

PUT

  • 요청한 주소의 자원을 수정

DELETE

  • 지정한 자원을 삭제

Django REST Framework

Serialization(직렬화)

  • 데이터 구조나 객체 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정

  • 예를들어 DRF의 Serializer는 장고의 Queryset 및 Model Instance와 같은 복잡한 데이터를 JSON, XML 유형으로 쉽게 변환 할 수 있는 Python 데이터 타입으로 만들어 줌.

api_view decorator

  • view함수가 응답해야하는 http method목록을 설정
  • 작성하지 않으면 기본적으로 GET 메소 드만 허용되며, 목록에 작성되지 않은 메서드일경우 405 Method Not Allowed를 반환
profile
Chocolate lover🍫 & Junior Android developer🤖

0개의 댓글