SERVER/Flask(9)
-
9. Flask (ORM)
Object Relational Mapping 객체 관계 매핑, 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하여 같은 객체 타입으로 사용하기 위한 데이터 변환 프로그래밍 기법이라고 생각하면 된다 테이블 : question 위와 같이 구성된 question 테이블에 새로운 데이터를 삽입하기 위한 쿼리문은 아래와 같다 insert into question (subject, content) values ("안녕하세요", "가입 인사드립니다 ^^"); insert into question (subject, content) values ("질문 있습니다", "ORM이 궁금합니다"); 아래는 위 쿼리문을 ORM을 사용하여 작성한 파이썬 코드이다 question = Question(su..
2021.08.18 -
8. Flask (RDB)
데이터베이스(DB, DataBase) 데이터를 저장하는 공간으로, 서비스를 개발하는 곳에서 빠질 수 없는 중요한 요소 데이터베이스는 크게 두 가지, 관계형 데이터베이스와 NoSQL로 나뉜다 관계형 데이터베이스(RDB) 키(Key)와 값(Value)들의 간단한 관계를 테이블 화 시킨 데이터베이스 딕셔너리 형태와 같이 { Key : Value }로 이루어져 있으며, 굉장히 정형화 되있는 모델 RDB의 특징 - 정형화 된 Data - DML을 사용해서 데이터 간 결합, 제약조건 등의 설정을 통해 데이터를 추출할 수 있다 (DML, Database Management Language) - 테이블 간의 데이터 관계를 설정할 수 있다 RDB의 형태 - 정형화된 데이터를 저장하고 있다(다른 형태의 데이터가 들어올 수..
2021.08.12 -
7. Flask (logging)
로깅(loggin)은 프로그램이 작동할 때 발생하는 이벤트(기능)를 추적하는 행위다 문제를 파악하고 유지보수 작업에 사용되며, 로깅을 통해 발생한 에러를 추적할 수 있다 DEBUG < INFO < WARNING < ERROR < CRITICAL 오른쪽으로 갈수록 심각도가 크다, 레벨이 높다고 표현할 수 있다 (높은 레벨의 에러는 하위 레벨의 에러들을 인식하지 않게 된다) 기본 로거 레벨 세팅이 WARNING이기 때문에 설정 없이는 INFO, DEBUG 출력 불가 DEBUG : 상세한 정보, 굉장히 Low level이기 때문에 섬세하게 파악 INFO : 일반적인 정보 WARNING : INFO보단 사용자 입장에서 주의했으면 좋겠다고 생각하는 문제 (예상치 못한, 발생할 가능성이 있는 문제) ERROR : ..
2021.08.06 -
6. Flask (Authentication)
추가 공부 키워드 : 권한 (Authorization), session 인증 (Authentication) 클라이언트가 서버로부터 누구인지 확인하는 절차 - 회원가입 → 로그인, Database에 사용자 정보 입력 (Create) - 로그인 ─ ID / PW → 서버, Database의 정보와 입력정보 비교 (Read) - 로그아웃, 인증정보 파기 [쿠키] 클라이언트에 저장되는 Key: value가 들어 있는 데이터 사용자가 따로 요청하지 않아도, Request 시 자동으로 서버에서 전송 서버 ─ ( Cookie ) → 클라이언트 (자신의 컴퓨터, 웹 브라우저에 저장) [세션] 쿠키를 기반으로 하지만 서버 측에서 관리하는 데이터 클라이언트에 고유 ID를 부여하고 클라이언트에 맞는 서비스를 제공 서버에서 ..
2021.08.06 -
5. Flask (CRUD)
API 동작 원리 1. Client ─ [ HTTP request ] → API ─→ Server 클라이언트의 데이터, 요청 방식에 맞는 API가 요청을 확인 이후 Server는 함수 안에 정의된 동작을 수행 후 요청에 대한 응답을 리턴 2. Server ─ [ HTTP response ] → API ─→ Client 이때의 서버로부터의 응답은 Page, JSON 등의 데이터가 클라이언트에게 전달될 것이다 [CRUD 주요 기능] Create → 데이터 생성 : 저장 기능과 관련이 크다(생성된 데이터를 보관하기 위해서는 저장이 필수) Read → 데이터 조회 : 읽기 기능과 관련이 크다(오로지 조회만을 위한 읽기 기능) Update → 데이터 수정 Delete → 데이터 삭제 : 저장, 읽기 기능 둘 다 ..
2021.08.05 -
4. Flask (Blueprint, Jinja Template)
Blueprint 길어진 코드를 각 역할별로 나누어 모듈화, 수정 개발과 유지보수에 용이하도록 코드를 분류 / 관리 (API, app.route( )들을 관리한다고 생각하면 된다) App.py 서버 파일에 모든 API들이 모여있는 것은 좋지 않은 파일이다 API들을 서버 파일에 하나에 몰아놓으면 유지보수 측면에서 효율성이 떨어지고 가독성도 떨어진다 이를 Blueprint를 이용해 파일을 나누어서 분리 시킬 수 있다 서버 실행만을 위한 App.py, API들을 관리하기 편하도록 분리시키기 위한 API.py 두 개의 파일을 준비 [App.py] from API import bp 분리시킨 API.py에서 bp를 import app.register_blueprint(bp) Flask를 정의하고 있는 app에 b..
2021.08.05 -
3. Flask (HTTP Method)
내가 생각하는 핵심 키워드 HTTP Method (포스팅 후 링크 추가 예정) HTTP Method의 개념 [GET] 데이터를 URL 뒤에 ?와 함께 사용하여 전송하는 방식 일반적으로 인터넷에서 많이 사용되는 Method로 사용하기 편리하다 단, URL의 길이가 길어지며 전송되는 데이터의 모든 정보가 노출되기 때문에 보안에 매우 취약 (데이터의 길이 제한, 로그인 기능 등과 같은 요청에 대해 제약이 있다) 즉, 민감하지 않은 데이터라고 할 수 있는 범위 내에서는 유용하게 활용이 가능하다 [POST] HTTP 통신에는 Header, Body가 있는데 여기서 Body에 이라는 태그 양식이 들어간다 POST는 이 태그에 데이터를 넣어서 전송하는 방식으로 URL에 노출되지 않는다 URL에 노출되지 않기 때문에 ..
2021.08.05 -
2. Flask (JSON, URL)
내가 생각하는 핵심 키워드 JSON, render_template Flask URL 연결 app.route(), url을 만들어주는 통로 app.route()와 이어져 있는 함수를 사용해서 HTML, JSON 형식의 데이터를 전달 (Web에는 많은 형식이 존재하지만 JSON으로 많이 전달받고 있다) 1. JSON JavaScript Object Notation, JavaScript 구문에 기반을 두고 있지만 JS는 아니다(차이점 존재) JSON을 직접 호출하거나 인스턴스를 생성할 수는 없고, 두 개의 메서드(?)를 제외하면 자신만의 흥미로운 기능은 없다고 한다 (추후 공부) Javascript 객체 리터럴 문법을 따르는 문자열로 js의 데이터 타입 + 다른 객체를 포함한다 이 같은 방식으로 데이터 계층을..
2021.08.05 -
1. Flask (Prologue)
Web의 동작 과정 원하는 정보에 대한 요청과 응답은 규칙 없이 이루어지지 않는다 Client : 미리 약속한 규칙을 통해 요청 Server : 정해진 형태의 데이터로 응답 구글, 네이버와 같은 각 페이지의 접속 주소는 미리 약속된 주소(API 주소) 약속되어있는 주소에 미리 약속된 방법으로 요청, 응답을 주고받으며 해당 페이지를 열람 이때, 정해진 방식(미리 약속된 방법)으로 데이터의 통로 역할을 하는 것이 API Framework 결과물을 만들기 위해 제공되는 틀, 미리 작성되어 있는 함수 (라이브러리) 이상의 기능을 제공 1. Flask Python을 사용해서 웹 서버를 만들 수 있게 도와주는 Web Framework 즉, 웹 서버를 만들기 위해 제공되는 틀(함수 이상의 기능을 제공하는)이다 Fla..
2021.08.05