자유 그리고 경험
파이썬 플라스크 간단 코드, 빠르게 웹서비스 만들기 본문
플라스크 설치
$ pip install Flask
플라스크 서버 코드
app.py
from flask import Flask # 서버 구현을 위한 Flask 객체 import
app = Flask(__name__) # Flask 객체 선언, 파라미터로 어플리케이션 패키지의 이름을 넣어줌.
@app.route('/')
def index():
return "Hello, World!"
if __name__ == "__main__":
from waitress import serve
serve(app, host='0.0.0.0', port=5000)
#app.run(debug=True, host='0.0.0.0', port=80)
작성하는 파이썬 파일 이름은 상관 없다.
VSC에서 실행을 하면 작성 파일이 꺼지지 않고 계속 실행되는 것을 확인할 수 있다.
localhost:5000 (로컬호스트의 5000번 포트) 로 접속해보면 아래와 같이 Hello World가 프린트 되는 것을 확인할 수 있다.
플라스크 HTML 파일 렌더링
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html') # 이부분만 바꿈
if __name__ == "__main__":
from waitress import serve
serve(app, host='0.0.0.0', port=5000)
#app.run(debug=True, host='0.0.0.0', port=80)
파일을 위와 같이 수정하고, 디렉토리는 아래처럼 꾸며준다.
바꾼 부분의 index.html은 서버 파일 디렉토리의 templates 폴더에서 찾도록 Flask 가 구성되어있다.
index.html은 원하는대로 만들어도 좋지만 나는 아래와 같이 만들었다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
플라스크
</body>
</html>
다들 알겠지만 VSC 에서는 느낌표 (!) 를 입력하고 탭(Tab) 키를 누르면 html 보일러플레이트가 자동으로 완성된다. Body 태그 안쪽만 바꿔주었다. 위와 같이 localhost:5000 으로 접속하면 내용이 바뀐 것을 확일할 수 있다.
코드에 써진대로 단순 html 파일만 불러오는 것이 아닌 'template' 이기 때문에, 플라스크에서 변수 등도 전달해서 유동적인 프론트를 만들 수 있다. 이 때 template 파일 안에는 플라스크에서 요구하는 형식의 변수 코드가 들어간다. 기회가 있으면 다른 포스팅에서 다루도록 하겠다.
플라스크 API
플라스크로 API 서버도 작성할 수 있다.
from flask import Flask # 서버 구현을 위한 Flask 객체 import
from flask_cors import CORS
from flask_restx import Api, Resource # Api 구현을 위한 Api 객체 import
app = Flask(__name__) # Flask 객체 선언, 파라미터로 어플리케이션 패키지의 이름을 넣어줌.
api = Api(app) # Flask 객체에 Api 객체 등록
CORS(app) # CORS 문제 해결
@api.route('/api/hi') # 데코레이터 이용, '/hello' 경로에 클래스 등록
class Hi(Resource):
def get(self): # GET 요청시 리턴 값에 해당 하는 dict를 JSON 형태로 반환
return {"인사": "Hello Flask"}
if __name__ == "__main__":
from waitress import serve
serve(app, host='0.0.0.0', port=5000)
#app.run(debug=True, host='0.0.0.0', port=80)
마찬가지로 실행하고 localhost:5000으로 들어가면 아래와 같은 화면을 만날 수 있다.
swagger를 이용하여 Flask가 API 안내 페이지까지 친절하게 만들어주었다.
localhost:5000/api/hi 로 들어가면
우리가 만든 api 결과까지 받아볼 수 있다.
마무리
Flask를 이용하여, 서버 구축과 프론트까지 빠르게 만들어 볼 수 있다. 다른 포스팅에서 다뤄볼 리눅스에서 돌리기까지 하면, 작은 개인 프로젝트나, 소규모의 서비스를 금방 만들어 볼 수 있다.
한 서버에서 프론트와 api도 동시에 돌릴 수 있으니 위 코드를 조합하여 해보기 바란다. 끝
'기술' 카테고리의 다른 글
Mac 유저의 윈도우 설정 - 탭 키 한/영으로 바꾸기 (0) | 2024.08.26 |
---|---|
Unity게임 Android 업로드용 Build하기(aab) (0) | 2022.12.02 |
ubuntu mariadb 설치 및 외부접속 기본 설정 (3) | 2022.06.27 |
텔레그램 봇, 명령어 링크 만들기(파라미터까지) (0) | 2022.06.26 |
텔레그램 봇 활용, 암기카드(사전) 만들기 (0) | 2022.06.24 |