๐Ÿ“’ [ TIL ] 2022.04.19_2์ผ์ฐจ # ๊ธฐ์ดˆ๊ฐ•์˜ํ•™์Šต(2)

๋ฌธ๋ช…์ฃผยท2022๋…„ 4์›” 19์ผ
1
post-thumbnail

[ 2022-04-19 (ํ™”) ์˜ค๋Š˜์˜ TIL ]

[ Today Learn ]

  • Flask๋ฅผ ์ด์šฉํ•ด GET/POST์š”์ฒญ ์ ์šฉํ•˜๊ธฐ
  • render_template ์ ์šฉํ•˜๊ธฐ
  • ์ธํ„ฐ๋„ท์„ธ์ƒ์— ๋‚ด ํ™ˆํŽ˜์ด์ง€ ๋ฐฐํฌํ•˜๊ธฐ

โœ๏ธ 4๊ฐ• ๋ณต์Šต

โ“ Flask๋ž€ ?

์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

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)

1) html ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์„œ๋ฒ„์—์„œ html ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” flask์˜ ๋‚ด์žฅํ•จ์ˆ˜์ธ 'render_template' ์„ ์ด์šฉํ•œ๋‹ค.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
   return render_template('index.html')

if __name__ == '__main__':
   app.run('0.0.0.0', port=5000, debug=True)

2) GET/POST ์š”์ฒญ์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•

  • 'GET' ์š”์ฒญ API์ฝ”๋“œ
    /test๋ผ๋Š” ์ฐฝ๊ตฌ์— GET๋ฐฉ์‹์œผ๋กœ 'title_give'๋ผ๋Š” ๊ฐ’์„ ๋ฐ›์•„์™€ 'title_receive'๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด๊ณ  ๋‹ค์‹œ response๋ฅผ ๋Œ๋ ค์ค€๋‹ค.
@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์ฝ”๋“œ
    /test๋ผ๋Š” ์ฐฝ๊ตฌ์— GET๋ฐฉ์‹์œผ๋กœ 'title_give'๋ผ๋Š” ๋ณ€์ˆ˜์— '๋ด„๋‚ ์€๊ฐ„๋‹ค'๋ผ๋Š” ๊ฐ’์„ ๋‹ด์•„ ์„œ๋ฒ„์— ๋ณด๋‚ด์ฃผ๊ณ , response๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
$.ajax({
    type: "GET",
    url: "/test?title_give=๋ด„๋‚ ์€๊ฐ„๋‹ค",
    data: {},
    success: function(response){
       console.log(response)
    }
  })
  • 'POST' ์š”์ฒญ API์ฝ”๋“œ
    /test๋ผ๋Š” ์ฐฝ๊ตฌ์— POST๋ฐฉ์‹์œผ๋กœ 'title_give'๋ผ๋Š” ๊ฐ’์„ ๋ฐ›์•„์™€ 'title_receive'๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด๊ณ  ๋‹ค์‹œ response๋ฅผ ๋Œ๋ ค์ค€๋‹ค.
@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์ฝ”๋“œ
    /test๋ผ๋Š” ์ฐฝ๊ตฌ์— POST๋ฐฉ์‹์œผ๋กœ 'title_give'๋ผ๋Š” ๋ณ€์ˆ˜์— '๋ด„๋‚ ์€๊ฐ„๋‹ค'๋ผ๋Š” ๊ฐ’์„ ๋‹ด์•„ ์„œ๋ฒ„์— ๋ณด๋‚ด์ฃผ๊ณ , response๋ฅผ ๋ฐ›์•„์˜จ๋‹ค
$.ajax({
    type: "POST",
    url: "/test",
    data: { title_give:'๋ด„๋‚ ์€๊ฐ„๋‹ค' },
    success: function(response){
       console.log(response)
    }
  })

โœ๏ธ 5๊ฐ• ๋ณต์Šต

๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ธํ„ฐ๋„ท์— ๋ฐฐํฌํ•˜๊ธฐ

์–ธ์ œ๋‚˜ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ํ•ญ์ƒ ์ผœ์ ธ์žˆ๋Š”์ƒํƒœ์—ฌ์•ผํ•˜๊ณ ,
๊ณต๊ฐœ IP์ฃผ์†Œ๋กœ ๋‚˜์˜ ์›น์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ์ปดํ“จํ„ฐ๋ฅผ ๊ณ„์† ์ผœ๋‘˜ ์ˆœ ์—†๊ธฐ๋•Œ๋ฌธ์— AWS๋ผ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ EC2์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด ๋‚ด ์ „์šฉ ์ปดํ“จํ„ฐ๋ฅผ ๊ตฌ์ž…ํ•˜๊ณ  ์ ‘์†ํ•œ๋‹ค. (Filezilla๋กœ EC2์— ์—…๋กœ๋“œ)
์—…๋กœ๋“œ๋ฅผ ํ•˜๊ธฐ์ „์— pip๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค(flask,pymongo,dnspython)
๋งˆ์ง€๋ง‰์œผ๋กœ AWS์—์„œ 5000ํฌํŠธ๋ฅผ ์—ด์–ด์ฃผ๊ณ , git-bash๋กœ nohup python app.py & ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ปดํ“จํ„ฐ๊ฐ€ ๊ณ„์† ์ผœ์ ธ์žˆ๋„๋ก ์„ค์ • ํ•ด์ค€๋‹ค.


๐ŸŒฑ ๋Š๋‚€ ์ 

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ํ†ต์‹ ํ•˜๋Š” ๋ถ€๋ถ„๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์›๋ž˜ ์ฒ˜์Œ ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ์„๋•Œ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ•์˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ณต์Šตํ•˜๊ณ ๋‚˜๋‹ˆ ์ž์—ฐ์ ์œผ๋กœ '์•„ ์ด๊ฒŒ ์ด๊ฑฐ๊ณ  ์ด๋ž˜์„œ ๋™์ž‘ํ•˜๋Š”๊ตฌ๋‚˜!!' ๋ผ๊ณ  ๊นจ๋‹ฌ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์˜ค๋Š˜๊นŒ์ง€๋Š” ๊ฐ•์˜๋ฅผ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๊ณ . ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๋ฅผ ์‹œํ–‰ํ• ํ…๋ฐ, ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ๋ฐฐ์šด ๊ฒƒ๋“ค์ด ๋ชจ๋‘ ํ—›๋˜์ง€์•Š๊ฒŒ ์ž˜ ํ™œ์šฉํ•˜๋Š” ์‹œ๊ฐ„์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

profile
ํ•˜๋ฃจ ํ•œ๊ฑธ์Œ์”ฉ ๊พธ์ค€ํžˆ ๋‚˜์•„๊ฐ€๋Š” ๊ฐœ๋ฐœ์ž๐Ÿ™†โ€โ™€๏ธ https://github.com/Moonmooj

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 4์›” 20์ผ

๋ฉ‹์žˆ์Šต๋‹ˆ๋‹ค! ๋ณต์Šต์€ ์ •๋ง ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด