Backend/Flask 8

Flask Test - 테스트 코드를 사용한 기능 확인 테스트

1) Flask Test 테스트 코드는 내가 작성한 기능들이 의도대로 잘 수행하는지 기능 확인을 위한 테스트를 위해 작성한다. - 테스트의 장점 (1) 테스트 환경 세팅 자동화 특수한 상황에 맞는 파라미터도 사전에 정의할 수 있기 때문에, 매번 파라미터 값을 수동으로 바꿔가면서 테스트하지 않아도 된다. (2) 통합 테스트 시간을 줄임 통합 테스트에는 테스트코드로 검증하기 어려운 부분에만 집중할 수 있다. (클라이언트 인터페이스 등) (3) 외부와 의존성 있는 로직을 테스트하기 편리 외부와 통신하는 로직을 Mock으로 처리해두면, 외부에서 발생할 수 있는 여러 환경을 내가 가짜로 구성할 수 있다. (4) 전체 테스트 자동화 모든 세부 기능을 통합 테스트에서 다 확인하기는 어렵다. 전체 테스트가 자동화되면,..

Backend/Flask 2022.03.01

flask-restful - RESTful API서버를 만드는 라이브러리

- Flask는 return 값을 jsonify로 주어 RESTful API를 만들 수 있다. flask-restful 라이브러리를 활용하면 더 RESTful에 맞게 서버를 만들 수 있다. 코드비교 === flask === @app.route('/first', methods=['GET']) def route(): return jsonify('GET') @app.route('/first', methods=['POST']) def route(): return jsonify('POST') === restful === class First(Resource): def get(self): return 'GET', 200 def post(self): return 'POST', 200 위 flask 코드와 아래 res..

Backend/Flask 2022.03.01

Flask 기초 - REST API (2) (Ajax를 사용한 update, delete)

1) Ajax - 동기? 비동기? 동기: 앞의 작업이 끝나지 않는다면 다음 작업을 할 수 없다. 비동기: 앞의 작업 상태와 상관없이 다음 동작을 수행할 수 있다. Ajax는 비동기식 자바스크립트와 XML의 줄임말로 REST API를 손쉽게 구현하기 위해 사용되는 프레임워크이다. (손쉽게..............?) - 간단하게 알아보는 Ajax의 형태, Flask와의 사용법 HTML파일 속 Ajax의 형태 $.ajax({ url: '/ajax test', //Ajax로 요청을 보낼 주소를 적음 type: 'GET', //어떤 방법으로 ? data: {}, //무슨 데이터를 ? // url, type, data까지가 클라이언트가 서버에 요청하는 부분 success: function(res){// 데이터 요..

Backend/Flask 2022.02.23

Flask 기초 - REST API (1) (create, read)

1) REST API REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다. REST 서버는 API 제공, 클라이언트는 사용자 인증 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 의존성이 줄어들게 된다. 자원: URI에 표현 되어야 한다. → 무엇을 서버에 요청할 것인지 ex) /book/1 행위: HTTP 메소드 → 어떤 방법으로 요청할 것인지 표현: API만 보고 무엇을 요청할지 알 수 있도록 *정리하자면* URI에 어떤 데이터를 요청하는지 표현이 되어야하고, 그 데이터에 대해 어떤 동작을 할 것인지를 HTTP Method들로 표현을 해야하는데 Mehtod에는 GET, POST, PUT, DELE..

Backend/Flask 2022.02.23

Flask 기초 I - SQL Alchemy

1) SQL Alchemy와 ORM ORM 데이터베이스에 객체를 통해 접근하는 방법을 ORM (Object Relational Mapping, 객체 관계 매핑)이라고 한다. ORM은 SQL 질의어 없이 DB를 다룰 수 있도록 도와준다. 아래와 같은 테이블이 있다고 해보자. 테이블 명은 user다. name age hayan 25 eunsol 26 user 테이블에 대한 아래 두 코드는 같은 행위를 수행하는 코드이다. * SQL쿼리문: INSERT INTO user (name, age) VALUES('hayan', 25); * ORM: member = Member() member.name ='hayan' member.age = 25 db.session.add(member) db.session.commit(..

Backend/Flask 2022.02.16

Flask 기초 I - RDB와 Flask 상호작용, 간단한 게시판, Flask JWT

1) RDB와 Flask 상호작용 RDB은 간단하게 설명하자면 관계형 데이터베이스로 NoSQL과는 다르게 정형화된 데이터베이스이다. 키와 값들의 간단한 관계를 테이블화 시킨 데이터베이스이다. 파이썬은 오픈소스와 상용 데이터베이스에 대한 대부분의 데이터베이스 엔진을 위한 패키지를 가지고 있다. RDB와 Flask의 상호작용을 통해 Flask에서 입력받은 내용을 DB에 저장할 수 있다. 상호작용을 그림으로 표현한 것이다. 클라이언트가 서버에 데이터를 요청하면 flask는 데이터베이스에 그 데이터가 있는지 확인하고 처리한다. 2) 간단한 게시판 만들기 DB에 저장되는 데이터를 활용하여 사용자를 검색해보기 DB에 저장되는 데이터를 활용해서 사용자를 추가해보기 (중복 사용자 방지) 게시판 내용을 생성, 조회, 수..

Backend/Flask 2022.02.11

Flask 기초 I - Blueprint, Jinja2, 로그인 구현, 로깅

1) Blueprint와 Jinja Template Blueprint Flask의 기능이 늘어날수록, 코드의 양이 증가한다. 이때, Blueprint를 사용해 길어진 코드를 모듈화해주어 수정 개발과 유지보수에 용이하게 코드를 관리한다. 아래 코드는 Blueprint를 사용하지 않았을 때의 코드이다. #app.py rom flask import Flask, jsonify app = Flask(__name__) @app.route("/", methods=['GET']) def home_route(): return jsonfiy('home') @app.route("/first",methods=['GET']) def first_route(): return jsonify('first page') 기본 url인 "..

Backend/Flask 2022.02.07

flask 기초 I - 데이터 화면에 표현, GET, POST 등

1) Flask Framework Framework(프레임워크)는 결과물을 만들기 위해 제공하는 틀이다. 미리 작성돼있는 함수 이상의 기능을 제공한다. Flask Framework는 파이썬을 사용해서 웹 서버를 만들 수 있도록 도와준다. 기능이 많은 Django와 비교했을 때, Flask는 기본적인 기능만 제공하기 때문에 개발이 자유롭다. 2) Flask로 웹 서버 만들기 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "hello" if __name__ == "__main__": app.run() (1) flask패키지에서 Flask를 import (2) @app.route() 는 서버에 접속가능한 url..

Backend/Flask 2022.02.04