๐Ÿชด ์„ฑ์žฅ์ผ์ง€

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ

pythonFlask

ํŒŒ์ด์ฌ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณต
flask ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

project--.venv
        ใ„ดstatic
        ใ„ดtemplates
        ใ„ดapp.py
  • .venv : ๊ฐ€์ƒํ™˜๊ฒฝ ํด๋”
  • static : ์ด๋ฏธ์ง€, css ๋“ฑ์„ ๋‹ด์•„๋‘๋Š” ํด๋”
  • templates : HTML ํŒŒ์ผ์„ ๋‹ด์•„๋‘๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ํด๋”
  • app.py : flask ์„œ๋ฒ„ ๊ตฌ๋™ ํŒŒ์ผ

app.py์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ

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)

GET๊ณผ POST

GET

  • ํ†ต์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ(Read) ์š”์ฒญ ์‹œ
  • URL ๋’ค์— ?(query)๋ฅผ ๋ถ™์ด๊ณ  ๊ทธ ๋’ค์— key=value ํ˜•ํƒœ๋กœ ์ „๋‹ฌ
  • ex) google.com?q=์‚ฌ๋ง‰

POST

  • ํ†ต์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ(Create), ๋ณ€๊ฒฝ(Update), ์‚ญ์ œ(Delete) ์š”์ฒญ ์‹œ
  • GET์ฒ˜๋Ÿผ URL์— ๋ณด์ด๋Š” ๊ฒƒ์ด ์•„๋‹Œ HTML body์— key:value ํ˜•ํƒœ๋กœ ์ „๋‹ฌ

๐ŸŒŸํด๋ผ์ด์–ธํŠธ(Front)์™€ ์„œ๋ฒ„(Back)๐ŸŒŸ

ํด๋ผ์ด์–ธํŠธ -> request(์š”์ฒญ) -> ์„œ๋ฒ„
์„œ๋ฒ„ -> response(์‘๋‹ต) -> ํด๋ผ์ด์–ธํŠธ

  • ํด๋ผ์ด์–ธํŠธ์ชฝ ์ฝ”๋“œ ๊ตฌ์„ฑ

    1. ๋ณด๋‚ด๋Š” ์š”์ฒญ ์ข…๋ฅ˜
    2. ์š”์ฒญ ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ
    3. ์š”์ฒญ ์„ฑ๊ณต ์‹œ ์ฒ˜๋ฆฌํ•  ๊ฒƒ
    $.ajax({
      type: 'POST', // 1. ๋ณด๋‚ด๋Š” ์š”์ฒญ ์ข…๋ฅ˜
      url: '/practice',
      data: { name_give: '์–ด๋–ค ๋ฐ์ดํ„ฐ' }, // 2. ํด๋ผ์ด์–ธํŠธ์ชฝ ๋ฐ์ดํ„ฐ ex) ๋กœ๊ทธ์ธ ์‹œ ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ
      success: function (response) {
        // 3. ์š”์ฒญ ์„ฑ๊ณต ํ›„ ๋ฐ›์€ ์‘๋‹ต์œผ๋กœ ์–ด๋–ค ๊ฑธ ํ• ์ง€
        console.log(response);
      },
    });
  • ์„œ๋ฒ„์ชฝ ์ฝ”๋“œ ๊ตฌ์„ฑ

    1. ์š”์ฒญ ์ข…๋ฅ˜ ๊ตฌ๋ถ„
    2. ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ผ๋ผ์ผ๋ผ ํ• ์ง€
@app.route('/practice', methods=['POST']) # 1. ์š”์ฒญ ์ข…๋ฅ˜ ๊ตฌ๋ถ„
def prac_post():
   name_receive = request.form['name_give'] # ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ธ '์–ด๋–ค ๋ฐ์ดํ„ฐ'
   print(name_receive) # 2. ์—ฌ๊ธฐ์„œ ์ด์ œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๋ฐ DB ๋ฐ์ดํ„ฐ๋กœ ์ผ๋ผ์ผ๋ผ
   return jsonify({'result':'success', 'msg': '์ด ์š”์ฒญ์€ POST!'}) # ์‘๋‹ต ๋ณด๋ƒ„