web/python & JavaScript

python Flask + mongoDB

3hoon 2022. 10. 25. 16:18

Flask 프레임워크란 서버를 구동시키기위한 python 프레임워크로

간편하게 서버를 구동시킬 수 있도록 도와주는 프레임워크이다.

 

mongoDB는 NoSQL의 한 종류로 딕셔너리 형태로 데이터를 저장한다.

데이터 마다 고유의 id를 가지지않고 빠른 장점이 있지만 그만큼

데이터의 일관성이 부족 할 수 있다.

 

 

Flask 기본 소스코드

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 서버는 모두 app.py 로 통일하는 편이다.

 

mongo DB 연결 기본 소스코드

 

from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:sparta@cluster0.xevhlvh.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.{Database 이름}

 

Flask가 정상적으로 작동하는 중.

Flask를 설치하고 실행한다면 위와 같은 코드가 뜨면서 정상적으로 작동된다.

Flask 서버 동작 방식

모든 api와 코드들은 Flask를 구축하면 위와 같은 형태로 로컬에서 동작하며

추후 도메인을 부여하는 등의 작업을 하려면 저 Flask와 연결을 해주어야 한다.

위 사진과 같은 동작 방식을 통해 콘솔창에서는 api들이 요청하고 응답하는 과정이 기록된다.

 

200 코드가 나오면서 정상적으로 GET요청을 주고 받았다는 뜻

Flask API 만들때의 소스코드

Jquery CDN

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

Flask 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!'})

index.html GET 요청 확인 Ajax 코드

$.ajax({
    type: "GET",
    url: "/test?title_give=봄날은간다",
    data: {},
    success: function(response){
       console.log(response)
    }
  })

Flask 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!'})

index.html Post 요청확인 Ajax 코드

$.ajax({
    type: "POST",
    url: "/test",
    data: { title_give:'봄날은간다' },
    success: function(response){
       console.log(response)
    }
  })