Flask(서버만들기)

김광훈·2021년 7월 27일
0

본 포스팅은 작성자의 기억을 되새김질하기 위해 작성되었습니다.

본 포스팅에서는 파이썬(python)의 Flask라는 프레임워크를 사용해서 서버를 만드는 방법에 대해 알아보자

Flask

Flask는 서버를 만드는데 도움을 주는 프레임워크로 이를 이용해서 서버를 만드는 방법에 대해 알아보자

한 대의 컴퓨터로 서버의 역할도 하고 클라이언트의 역할도 하는 것을 "로컬 개발환경" 이라고 한다. 본 포스팅에서는 로컬 개발환경으로 진행하도록 하겠다.

폴더 세팅

  1. 프로젝트 생성
  2. 프로젝트 폴더 안에 'static', 'templates' 폴더 생성
    ---> static 폴더 : 이미지,css파일을 넣어둔다. templates 폴더 : html파일을 넣어둔다.
  3. 프로젝트 폴더 안에 'app.py' 생성 ---> 서버 역할을 한다.
  4. 'templates'폴더 안에 'index.html'파일을 생성한다. ---> html 코드를 이 파일에 작성한다.

Flask 기본 실행

  1. Flask 라이브러리를 설치한다.
  2. app.py 파일에 아래 기본 코드를 붙여 넣는다.
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'

if __name__ == '__main__':  
   app.run('0.0.0.0',port=5000,debug=True)

크롬에서 http://localhost:5000/으로 접속해보자

  • 다음과 같이 url을 나눌 수 있다.
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'

@app.route('/mypage')
def mypage():  
   return 'This is My Page!'

if __name__ == '__main__':  
   app.run('0.0.0.0',port=5000,debug=True)

url별로 함수명이 같거나 route('/)내의 주소가 같으면 안된다.

  1. 간단한 index.html 파일 코드
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <title>Document</title>
</head>
<body>
    <h1>서버를 만들었다!</h1>
</body>
</html>
  • html 파일 불러오기

    flask 내장함수 render_template를 이용한다.

from flask import Flask, render_template
app = Flask(__name__)

## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.

@app.route('/')
def home():
   return render_template('index.html')

if __name__ == '__main__':
   app.run('0.0.0.0', port=5000, debug=True)

API 만들기

GET - 통상적을 데이터 조회(READ)를 요청한다
- 데이터 전달 : google.com?q=북극곰
POST - 통상적으로 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
- 데이터 전달 : 바로 보이지 않는 HTML,body에 key:value 형태로 전달

  • GET 요청 API코드
@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
  • GET 요청 확인 Ajax코드
$.ajax({
    type: "GET",
    url: "/test?title_give=봄날은간다",
    data: {},
    success: function(response){
       console.log(response)
    }
  })
  • POST 요청 API코드
@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
  • POST 요청 확인 Ajax코드
$.ajax({
    type: "POST",
    url: "/test",
    data: { title_give:'봄날은간다' },
    success: function(response){
       console.log(response)
    }
  })

[작성 팁]
1. 클라이언트와 서버 연결 확인
2. 서버부터 만들기
3. 클라이언트 만들기
4. 동작 확인

profile
잘 부탁드려요

0개의 댓글