python 기반의 마이크로 웹 프레임워크
Flask 서버 구현
#app.py
from flask import Flask
app = Flask(__name__) #flask의 이름을 app으로 넣어줌
@app.route('/') # @는 파이썬 데코레이터?를 의미. '/'주소를 요청받았을때 밑에있는 함수를 실행하라는 의미
def hello_flask():
return "Hello World!"
if __name__ == '__main__': #app.py를 직접적으로 실행한 경우엔 아래를 실행하라는 의미
app.run() #모듈로써가 아니라 직접적인 실행파일로 사용될때 이 로직을 사용하라는 의미
웹을 사용하는 사람들끼리 일종의 약속을 HTTP
HTTP.Request
: Client --> Server
HTTP.Response
: Server --> Client
우리는 Server의 입장에서 Client로부터 어떤 요청이 왔을 때,
무슨 일을 해야하는지 앞으로의 명세를 적어주어야 함.
👉 이를 해줄 수 있는 것이 Flask 와 Django
REST : Representational State Transfer
데이터가 아닌, 자원(Resource) 의 관점으로 접근
HTTP Method
같은 URI 다른 Action을 취할 수 있음
Postman?
API를 테스트 할 수 있는 툴
GET, POST, PUT 등 여러 메소드를 사용할 수 있음
내가 구현했던 REST API
from flask import Flask, jsonify, request
from flask_mysqldb import MySQL
from dotenv import load_dotenv
import os
load_dotenv()
app = Flask(__name__)
mysql = MySQL(app)
app.config['MYSQL_USER'] = os.getenv("MYSQL_USER")
app.config['MYSQL_PASSWORD'] = os.getenv("MYSQL_PASSWORD")
app.config['MYSQL_HOST'] = os.getenv("MYSQL_HOST")
app.config['MYSQL_DB'] = os.getenv("MYSQL_USER")
menus = [
{"id": 1, "name":"Espresso", "price":3800},
{"id": 2, "name":"Americano", "price":4100},
{"id": 3, "name":"CafeLatte", "price":4600}
]
#GET /menus | 자료 가져오기
@app.route('/menus')
def get_menus():
return jsonify({"menus" : menus})
#POST /menus | 자료를 자원에 추가
@app.route('/menus', methods = ['POST'])
def create_menu():
request_data = request.get_json()
num = menus[-1]['id']
new_menu = {
"id" : num+1,
"name" : request_data['name'],
"price" : request_data['price']
}
menus.append(new_menu)
return jsonify(new_menu)
#PUT | 자료 갱신
@app.route('/menus/<int:id>', methods = ['PUT'])
def update_menu(id):
request_data = request.get_json()
menus[id-1] = {
"id" : id,
"name" : request_data['name'],
"price" : request_data['price']
}
return jsonify(menus[id-1])
#DELETE | 삭제
@app.route('/menus/<int:id>', methods = ['DELETE'])
def delete_menu(id):
del menus[id-1]
return {
"delete" : "success"
}
if __name__ == '__main__':
app.run()
mySQL
이랑 Flask
를 연동시켜서 데이터베이스에 데이터를 저장하는 문제를 풀어보고싶었는데, 일단 mySQL
을 가져오고나서 '어떻게 저장하는거지..' 하면서 멍때림..😐
구글링을해가면서 해보려고해도 헷갈려서 완성은 못함ㅠ
will_해결한다.