본문 바로가기
들은 강의

[웹개발 입문 강의] [백엔드] Flask, API

by hotdog7778 2023. 6. 9.

스파르타 코딩클럽 웹개발 종합반 인강 - 공부 기록

 

수강 시작 ~ 

2023. 06. 06 ~ 

 

https://github.com/hotdog7778/sparta

 


백엔드

지난시간에 배운 파이썬으로 백엔드를 만들어보자.

 

 

Flask 라는 프레임 워크를 사용해서 서버 만들기

sparta/project/01.prac 디렉토리 에서 시작

 

가상환경(라이브러리) 통을 만들자

# 디렉토리 venv 설정 (가상환경)

cd /Users/tgkim/Desktop/sparta/project/01.prac
python -m venv venv

flask 라이브러리를 설치

pip install flask

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=5001,debug=True)

app.py 실행 후 브라우저에서 접속해보자

더보기

@app.route('/') 부분을 수정해서 URL을 나눌 수 있습니다! 간단하죠?

 

  • 주의할점!
    • url 별로 함수명이 같거나,
    • route('/')내의 주소가 같으면 안됩니다!

 

 

 

Flask - HTML

app.py 에다 html을 직접 작성 하지말고 index.html 파일에서 불러와보자

사용자(나) 는 브라우저를 사용해서 app.py에 요청한다.

app.py 가 동작 하면서 index.html (HTML, CSS, JavaScript) 를 전해준다.

브라우저는 HTML, CSS, JavaScript 를 보고 사용자(나)에게 보여준다.

더보기

Flask 서버를 만들 때,

항상,

프로젝트 폴더 안에,

ㄴtemplates 폴더 (html파일을 넣어둡니다)

ㄴapp.py 파일 이렇게 두 개를 만들어두고 시작하세요.

 

 

Flask - API

GET

Flow)

버튼을 누르면 > fetch 가 /test 호출 > app.py가 메세지 리턴 > 받은 메세지를 console.log로 출력한다.

index.html

<script>
        function hey() {
            fetch("/test").then(res => res.json()).then(data => {
                console.log(data)
            })
        }
    </script>
</head>

<body>
    <h1> 제목을 입력합니다. </h1>
    <button onclick="hey()">나는 버튼!</button>
</body>

app.py

@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

동작하는게 자꾸 헷갈린다.

 

POST

get은 조회만 했는데 POST는 데이터도 보낸다.

// POST 요청 fetch
let formData = new FormData();
formData.append("title_give", "블랙팬서");
// formData 에 데이터를 얹어서 보낸다.
fetch("/test", { method: "POST", body: formData }).then(res => res.json()).then(data => {
    console.log(data)
})
# 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!'})