DX Data School

Python Web Programming

Kim J 2024. 1. 30. 10:08

1. 준비

- 요청을 보내고 응답을 확인하기 위한 도구 : Web Browser 나 Web 요청도구 (POSTMAN 등)

- 서버를 개발하기 위한 파이썬 인터프리터

- 코드를 작성하기 위한 IDE

- 데이터를 영구적으로 저장하기 위한 데이터베이스 - ORM 학습을 위해서 관계형 데이터베이스 (Oracle, MySQL 등)

2. Web 개요

1) Web

- 인터넷에 연결 된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 정보 공간

(클라이언트가 서버에 요청하면 서버가 클라이언트에게 데이터를 전송하고 클라이언트는 이 데이터를 가지고 출력 코드를 직접 만들어서 출력)

2) 웹 애플리케이션은 수행되는 위치에 따라 분류

> Front End

- 요청을 하고 응답을 받아와 화면에 출력하는 애플리케이션

Web Front End 기술

[1] HTML 4.01 : 화면 구조

[2] CSS : 디자인

[3] JavaScript : 동적인 처리

[4] HTML 5 : Semantic 적인 요소를 추가하고 별도의 플러그인 없이 애플리케이션을 동작시키기 위한 자바스크립트를 추가한 HTML 상위버전

HTML 5 이전의 경우 아래와 같이 작성되어 클래스만 가지고 그 특성을 구분하기 힘들었다.

<div class = "header"> 제목 </div>

<div class = "content"> 내용 </div>

HTML 5 부터는 아래와 같이 태그에서 부터 구분을 지어 특성을 구분하고 판단하기 쉽게 만들었다.

<header> 제목 </header>

<body> 내용 </body>

* 브라우저를 이용하지 않고 애플리케이션을 별도로 제작해서 구현하기도 한다.

> Back End

[1] 애플리케이션을 제작하기 위한 프로그래밍 언어 기술

[2] 애플리케이션을 구현할 때 필요한 툴이나 프로그램 사용 기술

(동적이고 대화형으로 만들기 위한 부분)

[3] 데이터를 반 영구적으로 저장하기 위한 저장 기술 (클라이언트의 요청을 처리하기 위한 부분)

3) 웹 애플리케이션 동작 방식

- 서버 사이드 랜더링 ( 과거 )

- 템플릿 엔진을 이용하는 방식

클라이언트가 서버에게 요청을 하고 서버가 처리한 후 출력 코드를 만들어서 클라이언트에게 전송해 클라이언트가 출력하는 구조

- 클라이언트 사이드 렌더링 ( 최근 )

- 서버 애플리케이션과 클라이언트 애플리케이션을 별도로 제작하는 방식

클라이언트가 서버에게 요청을 하고 서버가 처리한 후 결과를 만들어 클라이언트에게 전송하고 클라이언트가 이 데이터를 이용해서 출력 코드를 만들어 출력하는 구조

4) Web 3.0

[1] 컴퓨터가 정보 자원의 뜻을 이해하고 논리적 추론까지 가능한 시맨틱 웹의 등장

[2] 플랫폼의 진화 : PC -> Mobile

[3] 인공지능의 향상

[4] 애플리케이션의 진화 - Opne API(데이터나 개발도구를 누구나 사용할 수 있도록 제공)

[5] OSMU(One Source Multi Use)

5)프레임워크 사용

- 프로그램의 규모가 확대되면서 높은 생산성과 쉬운 유지보수, 기능확장이 용이한 개발 기술이 필요해지면서 개발방법론, 소프트웨어 디자인패턴, 리팩토리, 프레임워크 등 소프트웨어 공학적 기술이 등장했고 최근에는 직접 구현하기 보다는 프레임워크를 많이 이용한다.

6) URL(Uniform Resource Locator)을 바라보는 측면

[1] RPC(Remote Procedure Call - 원격 프로시저 호출)

- URL이 함수를 호출하는 구조 (예전 방식)

[2] REST(Representational State Transfer)

- URL이 서버에 있는 리소르를 표현하는 구조

서버에게 요청을 했을 때 데이터를 넘겨주도록 만들고 작업 자체의 구분은 URL이 하지 않고 전송 방식이 하도록 하는 것

7) 전송 방식

[1] GET : 데이터를 가져올 때 사용하는 방식으로 파라미터가 URL에 노출

[2] POST : 데이터를 삽입할 때 사용하는 방식으로 파라미터가 URL에 노출되지 않음

[3] PUT : 데이터 수정 - 데이터 전체를 수정

[4] PATCH : 데이터 수정 - 데이터의 일부 속성을 수정, 멱등성이 없다고 권장하지 않음

* 멱등성 : 항상 일관성 있는 결과를 만들어내는 성질

[5] DELETE : 데이터 삭제

8) 상태 코드

- 서버가 클라이언트에게 응답을 전송할 때 응답에 대한 상태를 나타내는 3자리 코드

서버에서 클라이언트로 전송되며 클라이언트는 이를 통해 요청이 성공적으로 처리되었는지 또는 어떠한 문제가 발생 했는지를 확인 가능함.

일반적으로 브라우저 개발자 도구 또는 서버 로그와 같은 도구를 사용하여 확인할 수 있는데 상태 코드는 HTTP 응답의 첫 번째 줄에 나타남.

>> HTTP/1.1 200 OK 와 같이 표시됨

[1] 1XX (100번대) : 요청이 수신 되었으며 프로세스 진행중

[2] 2XX (200번대) : 요청이 성공적으로 처리됨

[3] 3XX (300번대) : 리다이렉션(Redirection) 중 / 완전한 처리를 위해 추가적인 동작이 필요한 경우로 서버의 주소나 요청한 문서가 이동 된 경우

[4] 4XX (400번대) : 클라이언트 오류 / 404 - URL이 잘못 됨

[5] 5XX (500번대) : 서버 오류

9) Python의 Web Framework

[1] Flask : 자유도가 높음, 구현해주는 것이 거의 없음, 적은 코드로 웹 서버를 만들 수 있음, 복잡한 애플리케이션을 만들 때 구현해야 할 내용이 많다.

[2] Fast API : REST API를 빠르게 만들기 위해서 등장한 프레임워크

[3] Django : 자유도가 낮음, 구현해주는 것이 많음, 복잡한 애플리케이션을 만들더라도 구현해야 할 코드가 적음, 자유도가 낮기 때문에 학습을 많이 해야한다.

이제 Django로 한번 해보러 가겠슴다..!

'DX Data School' 카테고리의 다른 글

Django 활용하여 Web Programming 실습 2  (0) 2024.01.30
Django 활용하여 Web Programming 실습  (2) 2024.01.30
Python 과 Mongo DB 연동  (1) 2024.01.30
Python의 Exception Handling(예외처리)  (1) 2024.01.30
NoSQL (MongoDB)  (1) 2024.01.30