본문 바로가기
WIL (Week I Learned)

Flask 프레임워크를 활용해서 API 만들어 사용하기 ( 1 )

by 딩공 2022. 2. 21.

로컬 개발 환경을 만들어보는 시간.

서버를 만들껀데 프레임워크를 사용해서 만들것이다.
그리고 클라이언트와 서버를 연결하고 그것을 어떤 순서로 이루어지는지 좀 정리해서 포스팅할것이다.

> Flask 시작하기 - 서버만들기

- Flask 패키지 설치하고 시작!

리마인드! 패키지 설치 화면 진입하기
윈도우 : 좌상단File → setting → Python interpreter
맥 : 좌상단Pycharm → Preference → Python Interpreter

 

- flask 로 검색한 후, Install package 클릭

 

Flask 프레임워크: 서버를 구동시켜주는 편한 코드 모음.

서버를 구동하려면 필요한 복잡한 일들을 쉽게 가져다 쓸 수 있습니다.

 

- Flask 기초: 기본 실행

 

 app.py 파일을 만들어 아래 코드를 붙여넣어봅니다.

👉 파일 이름은 아무렇게나 해도 상관없지만, 통상적으로 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=5000,debug=True)

 

- 오른쪽 클릭 → 'Run app'을 클릭하고, 터미널에 아래와 같은 메시지가 뜨면 실행 성공!

 

이제 크롬에서 http://localhost:5000/ 으로 접속해보세요.

 

- 종료하는 방법

터미널 창을 클릭하시고, ctrl + c 을 누르시면 서버를 종료할 수 있습니다.

 

> Flask 기초: URL 나눠보기

 

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

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

 

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)

 

 


> Flask 시작하기

 

- Flask 기초: 기본 폴더구조 - 항상 이렇게 세팅하고 시작!

 

 👉 Flask 서버를 만들 때, 항상,

프로젝트 폴더 안에,

ㄴstatic 폴더 (이미지, css파일을 넣어둡니다)

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

ㄴapp.py 파일

 

이렇게 세 개를 만들어두고 시작하세요.

이제 각 폴더의 역할을 알아봅시다!

(꼭 참고!! venv는 실제로는 보이지만, 안보인다~라고 생각하세요!)

 

 

- Flask 기초: HTML 파일 불러오기

 

templates 폴더의 역할.
HTML 파일을 담아두고, 불러오는 역할을 하죠!

 

> 간단한 index.html 파일을 templates 안에 만들기

 

> html 파일 불러오기

 

lask 내장함수 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)

 

 

 

 

 

 

 

> Flask시작하기 - 본격 API 만들기

- GET, POST 요청타입

은행의 창구가 API와 같다는 것을 기억하시나요?
같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 처리하는 것이 다른 것처럼,

클라이언트가 요청 할 때에도, "방식"이 존재합니다.
클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해,
어떤 요청 종류인지에 따라 응답하는 서버 쪽에 정보를 나눠서 알려주는 거에요.

 

- GET, POST 방식

여러 방식(링크)이 존재하지만 우리는 가장 많이 쓰이는 GET, POST 방식에 대해 다루겠습니다.

 

* GET    → 통상적으로! 데이터 조회(Read)를 요청할 때

                   예) 영화 목록 조회

              → 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달

              → 예: google.com?q=북극곰

 

* POST   → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때

                     예) 회원가입, 회원탈퇴, 비밀번호 수정

                → 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달

 

 

- GET, POST 요청에서 클라이언트의 데이터를 받는 방법

 

예를 들어, 클라이언트에서 서버에 title_give란 키 값으로 데이터를 들고왔다고 생각합시다.

(주민등록번호 라는 키 값으로 900120- .. 을 가져온 것과 같은 의미)

 

👉받은 값을 개발자가 볼 수 있게 print 로 찍어볼 수 있게 했습니다.

실전에선 print로 찍어주는 것 외에, 여러가지 작업을 할 수 있겠죠?

 

 

Jquery 임포트

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

 

 

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)
    }
  })

 

 

 

 

 

 

 

댓글