[풀스택] 가장 빠른 풀스택 파이썬 백엔드와 웹기술 부트캠프 Part1 정리
in Development on Flask
풀스택 관련 강의 들은거 간단하게 내용 정리.
파이썬 시작하기
1차서비스는 파이썬과 vue로 간단하게 만들고 -> 고객 반응 봐서(데이터분석, 기능 개선 테스트) -> 2차 서비스는 잘되는거 봐서 Java Spring이나 React로 만들면 된다.
프론트엔드와 백엔드 기본구성
- 웹서버 1세대 : HTML만, 웹서버
- 2세대 : HTML + DB
- 3세대 : MVC패턴으로 활용(웹페이지만 바꾸고싶을때 하나만 바꾸면 되니까 Model - View - Control, 화면웹페이지-프로그램-데이터베이스)
- 4세대 : Rest API로 통신(Gmarket에서 광고부분 따로, Best부분 따로 등등 API로)
파이썬 flask 기본과 웹기술
- @app.route(“/”) 이거만 기억하면 된다.
- 우리가 테스트할때는 127.0.0.1:포트번호 쓰는데, 네이버같은거는 포트번호같은게 없다. 그이유는 http는 80포트를 https 443포트가 디폴트이기 때문 때문이다.
- 통신은 HTTP 규격으로 하는데 request는 보통 메서드(GET같은거)와 Path가 핵심이고 헤더(소포 주소)랑 바디(소포내용물)도 같이 보낸다고 보면된다
- response는 HTTP 버젼과 Status Code(200 같은거)와 Status Message(OK같은거)로 오고, 헤더와 바디가 있다
- REST: CRUD 오퍼레이션
- REST API : REST기반으로 서비스 API 구현한거
- HTTPie를 사용하면 Postman 같은걸 터미널에서 가능
flask로 백엔드와 프론트엔드 둘다 구현
- flask render_template 을 쓰면: flask가 실행되는 하위폴더인 templetes 폴더에서 HTML파일을 전송한다. 그러면 flask로 정적 웹페이지를 로드할수 있다.
- 그래서 flask 구동하는 python 파일(안에 render_template코드) + 템플릿폴더에 템플릿 -> 크롬같은 웹브라우저에서 url이랑 파라미터 보내면 끝
- bootstrap 이용하면 웹페이지 쉽게 만들수 있다.(템플릿이라고 생각하면 됨)
다양한 프론트엔드
- jinja2 템플릿 : 웹페이지에서 파이썬 프로그래밍 가능 (``````, 반복문 등)
프론트엔드(vue)와 flask 기반 REST API
- CDN
- 멀리있는 아마존 서버까지 컨텐츠 다운받으면 힘드니까 가까운데에 컨텐츠를 저장해놓는 그런 기술
- 내서버에 css, js파일을 다운받는거 힘드니까 링크에서 바로 가져오는게 있다.
- Vue
- HTML 파일 안에서 url 경로를 포함시켜 CDN으로부터 Vue 라이브러리를 불러오는 방식
- 우리가 원래 button 클릭하면 클릭한걸 백엔드에서 가져오는 그런 코드를 써야되는건데
- 그러면 너무 힘드니까 vue를 사용하면 html에서 바로 백엔드에서 가져오는거처럼 할수 있다
- 백엔드 연결이 안되어서 CORS 임포트 해줘야 된다.
- Rest API
- POST만 좀 다르고 GET/PUT/DELETE는 방식이 비슷하다.
- POST는 json형식으로 받는거만 좀 다르다고 보면된다.
- GET은 파라미터가 URL 뒤에 붙고, POST는 바디에 들어간다
다양한 flask 백엔드 기능
- 에러다루기
- errorhandler로 에러를 다룰수있다.(없는 페이지 화면같은거 가능)
- 로깅
- DEBUG > INFO > WARNING > ERROR > Critical 순으로 크리티컬이 가장 쌘거(그래서 보통 에러 이하로만 저장해! 라는식으로 짬)
- from loggin.handlers 로 기능을 쓸수 있다
- 로그파일보면 log.1, log.2 이런거를 가끔 보는데 이게 maxByte옵션을 줘서 그렇다
if not app.debug:
와 같이 debug를 트루로 하고 아래 디버깅할때는 로깅 안남기는 식으로 만든다.- 파일 저장하는거나 이런건 자세히 찾아 보면서 코드 치면 되겠다.
- 다양한 데코레이터
before_first_request
: 데코레이터로 추가해서 웹 어플리케이션 기동 이후 가장 처음 들어오는 HTTP 요청에서만 실행할수 있음before_request
,after_reqest
등이 있다.
실전 블로그 풀스택 구현하기 : 기획과 구조잡기
- MVP(Minimum Viable Product)
- 최소한의 기능으로 제품을 만듬, 점차적으로 개선, 최근 스타트업 개발 방식
- MVC
- 웹서비스 구현할때 필요한 MVC 패턴. 이렇게 하면 유지보수가 쉬어진다고 한다.
- Model-View-Controller
- Model : 데이터(주로 데이터베이스)
- View : 텍스트, 버튼등 사용자 인터페이스(웹페이지)
- Controller : Model 과 View를 제어하는 중간 역할(중간 제어 코드)
- 이제부터 강의에서 아래 내용을 구현하려 한다.
- 지금까지는 하나의 파일에 flask를 때려박았는데, 이제 안그런다
- 현업에서 이렇게 AB테스트를 많이 한다
- 원래 같으면 blog_abtest.py에 모든 소스를 넣어야되는데,
- 블루프린트를 쓰면 여러 소스 파일에 Flask 코드를 작성할 수 있도록 하는기능(이걸 안쓰면 1개의 파이썬 파일에 다 집어넣어야함)
실전 블로그 풀스택으로 구현하기 : 데이트베이스 셋업
- 변경할필요없는건 mysql, 변경여지가 많은 logging은 Nosql을 사용한다.
- 이메일 구독 데이터는 pymysql을 쓸꺼다
- 로그 파일은 mongoDB 쓸꺼다(redis와 같은 in-memory 방식은 빠른 성능을 위해서 쓰인다.)
- pymysql, mongoDB도 CRUD 하는거랑 해봄
- 예를들어 프로젝트 안에 mongodb.py랑 mysql.py에서 접속 붙이고, session_mgmt.py랑 user_mgmt.py에서 insert하는 것들 코드를 넣었다.(Control부분=제어)
실전 블로그 풀스택으로 구현하기 : flask 로그인 기능과 라이브러리
- flask_login
- 로그인된 상태를 만들어주고 싶어서(쿠키로)
- 참고로 request 계속 보낼때 DB에있는 정보를 변환해서 보내주는걸 세션이라고 한다(쿠키vs세션 얘기해주는데..)
- F12 눌러서 네트워크 눌러서 보면 쿠키가 이상한난수로 되어있고, 아래 보면 세션에 그 쿠키내용이 들어가있다.
- 한번 세션을 만들면
is_authenticated
함수를 이용해서 다음부터는 로그인 된거처럼 한다
- staticmethod
- 코드에서 staticmethod 나오는데 이건 원래 클래스 만들고 매서드 만들면 객체 선언해야 쓸수있는데, staticmethod는 객체 선언 안해도 쓸수있다.
- 예를들어 고객 데이터 뽑기는 객체에 연관되어있는게 아니고 통용되어서 쓰이니까 객체 필요없이 뽑아낸다.