플라스크(Flask)란?
플라스크(Flask)는 파이썬으로 웹 어플리케이션을 만드는 마이크로 웹 프레임워크입니다.
대표적으로 웹 프레임워크에는 Flask, Django, Tornado 등이 있습니다.
마이크로 프레임워크란
핵심 기능만 간결하게 유지하지만, 확장 가능한 것을 목적으로 하는 프레임워크라고 합니다.
즉, 특별한 도구나 라이브러리가 필요 없기 때문에 마이크로 프레임워크라고 부른다고 합니다.
플라스크(Flask)는 특정 DB가 정해져 있지 않고, 제공하는 템플릿 엔진을 변경하는 것도 쉽다
플라스크(Flask) 설치하기
1) 파이썬 설치 후 pip 설치 확인
pip
'pip'가 설치되어 있다면, 명령어를 'cmd(명령 프롬프트)'에 입력하게 되면 [그림 1]과 같이 확인할 수 있습니다.
[그림 1] 'pip' 설치 확인
2) pip를 이용하여 플라스크(Flask) 설치
pip install flask
'pip install flask' 명령어를 'cmd(명령 프롬프트)'에 입력하게 되면 아래 그림과 같이 확인할 수 있습니다.
[그림 2] flask 설치
3) 기본 플라스크(Flask) 어플리케이션 작성
설치가 정상적으로 완료 되었는지 확인하기 위하여 기본 플라스크(Flask) 어플리케이션을 작성 해보겠습니다.
from flask import Flask # flask에서 Flask라는 class를 임포트 한 코드입니다.
app = Flask(__name__)
@app.route('/')
# route( ) 데코레이터를 사용해서 Flask에게 어떤 URL이 우리가 작성한 함수를 실행시키는지 알려줍니다.
# 즉, 생성한 객체의 route를 설정합니다. 이는 URL을 설정하는 것을 의미합니다.
def hello_world():
return 'Hello World!'
# hello_world()는 사용자 브라우저에 보여줄 메시지를 리턴합니다.
if __name__ == '__main__':
app.run()
# run() 함수를 사용하여 개발한 어플리케이션을 로컬 서버로 실행합니다.
# Flask라는 클래스의 객체를 생성하고 인자로 __name__ 을 입력합니다.
# [그림 3]과 같이 단일 모듈을 사용한다면, __name__을 인자로 사용해야 합니다.
# 왜냐하면 어플리케이션으로 시작되는지 혹은 모듈로 임포트 되는지에 따라 이름이 달라지기 때문입니다.
# 만약, 패키지를 사용하는 경우라면 일반적으로 패키지 이름으로 작성하는 것이 좋습니다.
# 때문에 인자로는 모듈이나 패키지의 이름을 넣습니다.
# 이는 플라스크(Flask)에서 템플릿이나 정적파일을 찾을 때 필요합니다.
※ 데코레이터(Decorator)란?
하나의 함수를 취해서 또 다른 함수를 반환하는 함수를 의미합니다.
소스파일을 모듈이 아닌 python 인터프리터를 이용해서 직접 실행한다면,
if __name__ == '__main__': 은 우리가 실행한 서버가 현재 동작되는 유일한 서버라는 의미입니다.
아래 [그림 3]은 python 인터프리터를 이용해서 직접 실행한 화면입니다.
[그림 3] hello_world.py 실행 후, http://127.0.0.1:5000으로 접속
[그림 3]을 보면 정상적으로 브라우저에 'Hello World!'가 표시됨을 확인할 수 있습니다.
만약 가상머신이나 외부환경에서 이용할 경우,
app.run()을 app.run(host='0.0.0.0')으로 변경하면 외부에서 접근 가능한 것으로 설정됩니다.
출처: https://forensickelly.tistory.com/entry/Python-Windows에서-Flask-설치하기 [forensic's kelly]
'API 서버개발' 카테고리의 다른 글
@jwt_required() 가 , 토큰을 받아야 작업을 한다는 뜻 (0) | 2022.01.06 |
---|---|
JWT ( JSON WEB TOKEN ) 이란? (0) | 2022.01.06 |
Postman - Bearer (0) | 2022.01.06 |
rest api 개발할수있는 파이썬 프레임워크 설치 pip install flask-restful (0) | 2022.01.03 |
RestFul API 정리 (URL,Methods,Message) (0) | 2022.01.03 |