자유 그리고 경험

파이썬 플라스크 간단 코드, 빠르게 웹서비스 만들기 본문

기술

파이썬 플라스크 간단 코드, 빠르게 웹서비스 만들기

배아줄기세포 2022. 7. 28. 10:37
반응형

플라스크 설치

$ 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 으로 접속하면 내용이 바뀐 것을 확일할 수 있다.

타이틀과, body의 내용이 바뀌었다.

코드에 써진대로 단순 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으로 들어가면 아래와 같은 화면을 만날 수 있다.

API 설명

swagger를 이용하여 Flask가  API 안내 페이지까지 친절하게 만들어주었다. 

 

localhost:5000/api/hi 로 들어가면

api 결과

우리가 만든 api 결과까지 받아볼 수 있다.

 

마무리

Flask를 이용하여, 서버 구축과 프론트까지 빠르게 만들어 볼 수 있다. 다른 포스팅에서 다뤄볼 리눅스에서 돌리기까지 하면, 작은 개인 프로젝트나, 소규모의 서비스를 금방 만들어 볼 수 있다.

한 서버에서 프론트와 api도 동시에 돌릴 수 있으니 위 코드를 조합하여 해보기 바란다. 끝

반응형
Comments