Django [파이썬 웹프로그래밍]

DONGHYUN KOO·2020년 9월 7일
0

Django-series

목록 보기
1/2

장고에 대한 이해도가 부족하여 책을 구매해서 진행하게 되었습니다.
참고서적은 'Django로 배우는 쉽고 빠른 웹개발 파이썬 프로그래밍' 입니다.

웹프로그래밍의 이해

파이썬으로 웹 프로그래밍을 시작하기 전에 웹 프로그래밍의 기본 기술에 대해 이해
할 필요가 있습니다.

웹 프로그램은 기본적으로 클라이언트-서버로 이루어집니다.

웹프로그램이란?

간단히 말하면 HTTP(S) 프로토콜로 통신하는, 클라이언트와 서버를 개발하는 것

웹클라이언트와 웹서버를 같이 개발할 수도 있고, 웹 클라이언트 또는 웹 서버 하나만
개발할 수도 있습니다. 보통은 웹 서버를 개발하는 경우가 많아서 파이썬 웹 프로그래
밍이라고 하면 우선적으로 장고와 같은 앱 프레임워크를 사용하여 웹 서버를 개발하는 것을
떠올리게 됩니다.

EX> 네이버 접속(웹 브라우저를 실행)

  • 웹 브라우저(웹 클라이언트) - 네이버 (웹 서버)
    클라이언트- 서버프로그램으로 동작

웹 브라우저 이외에도 웹 서버에 요청을 보내는 웹 클라이언트는 다양하게 만들수 있다

  • 웹 브라우저를 사용하여 요청
  • 리눅스 curl명령을 사용하여 요청
  • Telent을 사용하여 요청
  • 직접 만든 클라이언트로 요청
  • 웹 클라이언트의 형태는 달라도 동일한 요청에 대해서는 동일한 응답을 받는다.
  • 웹 브라우저가 아니더라도 웹 클라이언트의 요청을 보낼수 있다는 것을 알수 있습니다.

HTTP 프로토콜

HTTP는 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신방식으로,
TCP/IP 프로토콜 위에서 동작합니다.(웹을 이용하려면 웹 서버와 웹 클아이언트는 각각 TCP/IP
동작에 필수적인 IP 주소를 가져야한다)

HTTP 메세지의 구조

HTTP 메시지는 클라이언트에서 서버로 보내는 요청 메시지와 서버에서 클라이언트로 보내는 응답 메시지 2가지가 있다

  • 최 상단은 스타트라인이라고 하며 요청 메시지일 때 요청라인이라고 하고, 웅답메시지 일떄는
    상태라인 이라고 합니다
  • 헤더는 각 행의 끝에 줄 바꿈 문자인 CRIF가 있으며, 헤더와 바디는 빈줄로 구분합니다.
  • 헤더와 바디는 생략할 수 있고, 바디에는 텍스트 뿐만 아니라 바이너리 데이터도 들어갈 수 있습니다.

GET/ book/shakespeare HTTP/1.1
HOST :www.example.com:8800

  • GET: 요청방식(method)
  • book/shakespeare HTTP:요청 URL
  • 1.1 :프로토콜 버전

두번쨰 줄은 헤더로 이름:값 형식으로 표현, HOST 항목은 필수로 표시해야 함

GET http://www.example.com:8080/book/shakespeare HTTP/1.1

  • URL에 HOST를 표시하면 HOST헤더는 생략할 수 있습니다.

HTTP 처리방식

  • HTTP 메소드를 통해서 클라이언트가 원하는 처리 방식을 서버에 알려줍니다.

    메소드명의미CRUD와 매핑되는 역할
    GET리소스취득Read(조회)
    POST리소스생성,리소스 데이터 추가Create(생성)
    PUT리소스 변경Update(변경)
    DELETE리소스 삭제Delete(삭제)
    HEAD리소스의 헤더 취득
    OPTIONS리소스가 서포트하는 메소드 취득
    TRACE루프백 시험에 사용
    CONNECT프록시 동작의 터널 접속으로 변경
  • 이 중에서 많이 사용되는 메소드(GET,POST,PUT,DELETE) 4개의 메소드이며
    데이터 조작의 기본이 되는 CRUD와 매핑되는 처리를 합니다.

  • GET 방식은 지정한 URL의 정보를 가져오는 메소드로, 가장 많이 사용됩니다.
    웹 브라우저를 이용하여 서버로부터 웹페이지, 이미지, 동영상등을 가져오려고 할 때
    수 많은 GET 방식의 요청을 사용하게 됩니다.

  • POST의 대표적인 기능은 리소스를 생성하는 것으로, 블로그에 글을 등록하는 경우가 이에
    해당됩니다.

  • PUT은 리소스를 변경하는데 사용됩니다. 예를 들어 블로그에서 글을 업로드한 작성자를
    변경하거나 글의 내용을 업데이트를 하는 등의 경우가 이에 해당됩니다.

참고) POST와 PUT 용도 구분(URL 결정권)

  • 새롭게 생성한 리소스에 대한 URL결정권이 서버측에 있을떄 POST를 사용,
    URL 결정권이 클라이언트에 있을 경우 PUT을 사용

-> 혼동을 줄수 있으니 리소스 생성은 POST, 리소스의 변경은 PUT으로 사용

  • DELETE는 이름 그대로 리소스를 삭제하는 메소드입니다. 일반적으로 DELETE 요청에 대한 응답은 바디를 반환하지 않습니다.

0개의 댓글