[TIL] day15

Hyebin·2021년 12월 27일
0

TIL

목록 보기
16/47

TIL

  • Flask & Postman 사용법
  • REST API 구현해보기

Flask

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로부터 어떤 요청이 왔을 때,
무슨 일을 해야하는지 앞으로의 명세를 적어주어야 함.
👉 이를 해줄 수 있는 것이 FlaskDjango

REST API

REST : Representational State Transfer

데이터가 아닌, 자원(Resource) 의 관점으로 접근

HTTP Method

  • GET
  • POST
  • PUT
  • DELETE

같은 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_해결한다.

참고
https://ninano1109.tistory.com/137

profile
공부중입니다 :D

0개의 댓글

관련 채용 정보