๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python

<TIL> / [์ฝ”๋ฆฐ์ด] ๋ฐฑ์—”๋“œ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ, ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๊ทธ ํ๋ฆ„์— ๋Œ€ํ•ด์„œ

by ๊ถŒ์Šพํ–„ 2023. 5. 18.

[์ฝ”๋ฆฐ์ด]

์ด ๊ธ€์€ ์ด์ œ ๋ง‰ ๊ฐœ๋ฐœ์˜ ๋ฌธ์„ ๋‘๋“œ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•œ [์ฝ”๋ฆฐ์ด]๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๋ณธ์ธ์˜ ๋จธ๋ฆฟ์†์— ๊ฐ€์žฅ ๊ธฐ์–ต์ด ์ž˜ ๋‚จ๋Š” ํ˜•ํƒœ (๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ง ํ•˜๋“ฏ์ด)๋กœ ์ž‘์„ฑ์ด ๋˜๋‹ˆ

๊ฐ„ํ˜น ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด๋‚˜, ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„

 

์šฐ์„  ๋ฐฑ์—”๋“œ์ธ app.py์˜ ์ „์ฒด์ฝ”๋“œ ๋ณด๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” flask ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

@app.route("/bucket", methods=["POST"])
def bucket_post():
    sample_receive = request.form['sample_give']
    print(sample_receive)
    return jsonify({'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})
    
@app.route("/bucket", methods=["GET"])
def bucket_get():
    return jsonify({'msg': 'GET ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

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

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ API๊ฐ€ 2๊ฐœ๋„ค์šฉ?? ์–ด๋–ค๊ฑฐ ์–ด๋–ค๊ฑฐ??? ์•ž์— ๊ณจ๋ฑ…์ด ๋ถ™์€๊ฑฐ~

@app.route("/bucket", methods=["POST"])
def bucket_post():
    sample_receive = request.form['sample_give']
    print(sample_receive)
    return jsonify({'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

์ž ์š”๊ฑฐ ํ•˜๋‚˜ ~

@app.route("/bucket", methods=["GET"])
def bucket_get():
    return jsonify({'msg': 'GET ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

์š”๊ฑฐ ํ•˜๋‚˜ ~ ๊ทธ๋Ÿผ ์ผ๋‹จ ์–ด๋–ป๊ฒŒ ์ƒ๊ธด ์• ๋“ค์ธ์ง€๋งŒ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ‘์‹œ๋‹ค.


์šฐ์„  ์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ๋ถ€ํ„ฐ

@app.route("/bucket", methods=["POST"])
def bucket_post():
    sample_receive = request.form['sample_give']
    print(sample_receive)
    return jsonify({'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

๋ฐฉ์‹์€ = POST ์ด๊ณ , /bucketํƒ€๊ณ  ๋“ค์–ด์™”๋‹ค๋„ค์š”.

* ์ฐธ๊ณ ๋กœ POST = ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ(Create)ํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œ(Delete)ํ•˜๊ฑฐ๋‚˜, ๋ณ€๊ฒฝ(Update)ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ผ๋‹จ ์ด ์•„์ด๋Š” /bucket์„ ํƒ€๊ณ  ์˜ค๋ฉด์„œ ๋ญ”์ง„ ๋ชฐ๋ผ๋„ ์šฐ์„  data๋Š” ๊ฐ€์ง€๊ณ  ์™”๊ฒ ๋„ค์š”?? ์ผ๋‹จ ๋ด…์‹œ๋‹ค.

 

def bucket_post():

/bucketํƒ€๊ณ  ๋“ค์–ด์˜ค๋ฉด~ ๋‚˜๋Š” bucket_post() ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅผ๊ฑฐ์•ผ~ ๊ทธ๊ฒŒ ๋ญ”๋ฐ??

: ๋ฐ‘์— ์„ธ ์ค„~

  sample_receive = request.form['sample_give']

์šฐ์„  ๋„ˆ๊ฐ€ ๊ฐ–๊ณ ์˜จ data์˜ form(ํ˜•ํƒœ)๊ฐ€ 'sample_give'๋ผ๋Š” ์นœ๊ตฌ๊ฐ€ ์žˆ์œผ๋ฉด ์šฐ๋ฆฐ ๊ทธ๊ฑธ sample_receive๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ฐ›์„๊ฑฐ์•ผ.

    print(sample_receive)

๊ทธ๋ฆฌ๊ณ  sample_receive๋กœ ๋ฐ›์€ data๋ฅผ ์šฐ๋ฆฐ printํ• ๊ฑฐ์•ผ ~

* ์ฐธ๊ณ ๋กœ print()ํ•˜๋ฉด ()๋‚ด์šฉ์„ ๋ณด์—ฌ์ค˜~ ๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    return jsonify({'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

๊ทธ๋ฆฌ๊ณ  data๋ฅผ ๋‚ด๋ ค์ค„๊ฑด๋ฐ data๋Š” {'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'} ์ด๋ ‡๊ฒŒ ๋‚ด๋ ค์ค„๊ฑฐ์•ผ~

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์ฒซ ๋ฒˆ์งธ API ํ•ด์„


๋‘ ๋ฒˆ์งธ API

@app.route("/bucket", methods=["GET"])
def bucket_get():
    return jsonify({'msg': 'GET ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

๋ฐฉ์‹์€ = GET ๋ฐฉ์‹์ด๊ณ ~, /bucket ์ด๋ผ๋Š” ๋ฃจํŠธ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด์˜ค๋ฉด~ ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜ bucket_get() ๋ถˆ๋Ÿฌ์˜จ๋ฐ~

๋‚ด์šฉ์ด ๋ญ์•ผ? {'msg': 'GET ์—ฐ๊ฒฐ ์™„๋ฃŒ!'} ์ด๊ฑฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‚ด๋ ค์ฃผ๋„ค~ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋‘ ๋ฒˆ์งธ API ํ•ด์„

* ์ฐธ๊ณ ๋กœ GET์€ data๋ฅผ ์กฐํšŒ(Read)๋ฅผ ํ•  ๋•Œ ์ฃผ๋กœ ์”๋‹ˆ๋‹ค. 


๊ทธ๋ƒฅ ์ฐธ๊ณ  * ์œ„์— POST๋Š” ์ƒ์„ฑ(Create)ํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œ(Delete)ํ•˜๊ฑฐ๋‚˜, ๋ณ€๊ฒฝ(Update) / GET์€ ์กฐํšŒ(Read)

์–ด๋ผ๋ผ CRUD ๋‹ค ๋‚˜์™”๋„ค (์ฒดํฌ!)


์ž ์šฐ์„  ์„œ๋ฒ„๊ฐ€ ์ƒ๊ธด๊ฑด ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๊ณ ~ ์ด์ œ ํด๋ผ์ด์–ธํŠธ(frontend)์˜ ํ•จ์ˆ˜๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋ณด๋Ÿฌ ๊ฐ‘์‹œ๋‹ค.

์—ฌ๊ธฐ๋„ 2๊ฐœ๊ฐ€ ์žˆ๋„ค~

    <script>
        $(document).ready(function () {
            show_bucket();
        });
        function show_bucket() {
            fetch('/bucket').then(res => res.json()).then(data => {
                console.log(data)
                alert(data["msg"]);
            })
        }

        function save_bucket() {
            let formData = new FormData();
            formData.append("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ");

            fetch('/bucket', { method: "POST", body: formData, }).then((response) => response.json()).then((data) => {
                alert(data["msg"]);
                window.location.reload();
            });
        }

    </script>

์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜ ๋ถ€ํ„ฐ ๋ด…์‹œ๋‹ค.

    <script>
        $(document).ready(function () {
            show_bucket();
        });
        function show_bucket() {
            fetch('/bucket').then(res => res.json()).then(data => {
                console.log(data)
                alert(data["msg"]);
            })
        }

์ž ์—ฌ๊ธฐ์„œ

    <script>
        $(document).ready(function () {
            show_bucket();
        });

$(document).ready()๋Š” ์›น ํŽ˜์ด์ง€ ์ฐฝ์ด ๋กœ๋”ฉ์ด ๋˜๋ฉด~ ์ค€๋น„๊ฐ€ ๋˜๋ฉด~ ()ํ• ๊ฑฐ์•ผ~ ์ด๋Ÿฐ ๋œป์ž…๋‹ˆ๋‹ค.

 

()๊ฐ€ ๋ญ์•ผ?

function () {
            show_bucket();
        });

ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ show_bucket() ์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ๊ฑฐ์•ผ~ ๊ทธ๊ฒŒ ๋ญ”๋ฐ~?

 

์ด์–ด์ง€๋Š” ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด

function show_bucket() {
            fetch('/bucket').then(res => res.json()).then(data => {
                console.log(data)
                alert(data["msg"]);
            })
        }

๋‚ด์šฉ์€ ๋‚˜ ์ค‘๊ด„ํ˜ธ{} ํ• ๊ฑฐ์•ผ~

๋ณด๋ฉด fetch('/bucket') ์ด๋ผ ์“ฐ์—ฌ์žˆ๊ณ , ํ•ด์„์€ = ์–ด ๋‚˜ '/bucket' ์—ฌ๊ธฐ๋กœ fetch(๋ณด๋‚ผ๊ฑฐ์•ผ~) *fetch=๋ณด๋‚ด๋‹ค

๊ทธ๋ฆฌ๊ณ 

then(res => res.json()).then(data => {
                console.log(data)
                alert(data["msg"]);
            })

res(๊ฒฐ๊ณผ ๊ฐ’) ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์•„์˜ฌ๊ฑด๋ฐ~ json() (์ œ์ด์Šจํ˜•ํƒœ) ๋กœ ๋ฐ›์•„์˜ฌ๊ฑฐ์•ผ~. then ๊ทธ๋ฆฌ๊ณ ! ๊ฒฐ๊ณผ๊ฐ’์„ data๋ผ๊ณ  ํ•˜๊ณ ,

๋‚˜๋Š” ๊ทธ๊ฑธ {} ์ค‘๊ด„ํ˜ธ~ ํ• ๊ฑฐ์•ผ.

{}์— ๋ญ์žˆ์–ด?

                console.log(data)
                alert(data["msg"]);

์ œ์ด์Šจ ํ˜•ํƒœ๋กœ ๋ฐ›์•„์˜จ ๊ฒฐ๊ณผ๊ฐ’์„ data๋ผ ํ•˜๊ณ  ๊ทธ๊ฑฐ๋ฅผ console.log๋กœ ์ฝ˜์†”์ฐฝ์— ์ฐ์–ด๋ณผ๊ฑฐ์•ผ~

๊ทธ๋ฆฌ๊ณ  alert๋ฅผ ๋„์šธ๊ฑฐ์•ผ~ ๋ญ๋ฅผ??? data์˜ "msg" ๊ฐ’์„ !!

 

* ์ฐธ๊ณ ๋กœ ๊บฝ์‡ []๋‚˜์˜ค๊ณ  ์•ˆ์— "msg" ์ด๋Ÿฐ ๋ฌธ์ž์—ด ๋‚˜์˜ค๋ฉด ? ๊ทธ๊ฑด dictionary

dictionary๋Š” ๋ญ˜๋กœ ์ด๋ค„์ ธ ์žˆ๋‹ค?? ์ค‘๊ด„ํ˜ธ ์•ˆ์— !{ key : value, key: value, ........ }

๊ทธ๋Ÿผ alert์„ ๋„์šธ ๋•Œ dictionary์˜ key ๊ฐ’์ธ "msg"๋ฅผ ๋„์› ์œผ๋‹ˆ๊นŒ? ์ฐํžˆ๋Š”๊ฑด value๊ฐ’์ด ์ฐํžˆ๊ฒ ๋„ค~

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ ํ•ด์„


๋‘ ๋ฒˆ์งธ ์ฝ”๋“œ

function save_bucket() {
            let formData = new FormData();
            formData.append("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ");

            fetch('/bucket', { method: "POST", body: formData, }).then((response) => response.json()).then((data) => {
                alert(data["msg"]);
                window.location.reload();
            });
        }

save_bucket() ์ด๋ผ๋Š” ํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์˜ฌ๊ฑฐ์•ผ~ ๋‚ด์šฉ์ด ๋ญ์•ผ? ์ค‘๊ด„ํ˜ธ !! {}

๊ทผ๋ฐ ์ด๋ฒˆ save_bucket()ํ•จ์ˆ˜๋Š” ์–ธ์ œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฑธ๊นŒ???

์กฐ๊ธˆ๋” ์•„๋ž˜์— ๋‚ด๋ ค๊ฐ€์„œ ์ „์ฒด ์ฝ”๋“œ ์ค‘ <body>๋ถ€๋ถ„์„ ๋ณด๋ฉด ์žˆ๋‹ค. ๊ทธ ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค.

<button onclick="save_bucket()" type="button" class="btn btn-outline-primary">๊ธฐ๋กํ•˜๊ธฐ</button>

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด <button>์ด๋ผ๋Š” ๋ฒ„ํŠผํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๊ณ  ๋ฐ”๋กœ ์˜†์— onclick="save_bucket()" ์žˆ๋„ค์š”.

 

ํ•ด์„ํ•˜๋ฉด '๊ธฐ๋กํ•˜๊ธฐ'๋ผ๋Š” ๋ฒ„ํŠผ์„ ์‚ฌ์ดํŠธ์—์„œ ํด๋ฆญํ•˜๋ฉด~ "save_bucket()"์ด๋ผ๋Š” ํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์™€~ ์ด๋ ‡๊ฒŒ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค

 

 

๊ทธ๋Ÿผ ๋‹ค์‹œ save_bucket()๋กœ ์˜ฌ๋ผ์™€์„œ ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์ธ ์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ๋ถ€๋ถ„

let formData = new FormData()

๋ฌด์–ธ๊ฐ€ ์ƒˆ๋กœ์šด ํ˜•ํƒœ(form)์˜ data๋ฅผ formData๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ฐ›์„๊ฑฐ๊ณ  ~

formData.append("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ")

๊ทธ formData๋ฅผ append ๋ถ™์ผ๊ฑฐ์•ผ~ ์–ด๋–ป๊ฒŒ~~?

"sample_give"๋ผ๋Š” ์ด๋ฆ„์˜ "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ"๋ผ๋Š” data๋ฅผ ๊ฐ€์ง„ formData๋กœ~ ๊ทธ๋ฆฌ๊ณ 

            fetch('/bucket', { method: "POST", body: formData, }).then((response) => response.json()).then((data) => {
                alert(data["msg"]);
                window.location.reload();

 fetch ๋ณด๋‚ผ๊ฑฐ์•ผ~ ์–ด๋””์—? '/bucket' ๋ผ๋Š” ๊ณณ์—~, ๋ฐฉ์‹์€ POST๊ณ  , ๋‚ด์šฉ๋ฌผ์€ formData๋กœ, then ๊ทธ๋ฆฌ๊ณ 

๋‹ค์‹œ data๋ฅผ ๋ฐ›์•„์˜ฌ๊ฑฐ๊ณ ~ ๊ทธ data์˜ "msg"๊ฐ’์„ alert ๋„์šธ๊ฑฐ์•ผ~

 

์—ฌ๊ธฐ๊นŒ์ง€ํ•ด์„œ ๋‘ ๋ฒˆ์งธ ์ฝ”๋“œ๊นŒ์ง€

window.location.reload();

* ์ฐธ๊ณ ๋กœ ์œ„ ์ฝ”๋“œ๋Š” alert์„ ๋„์› ์œผ๋ฉด, ์œˆ๋„์šฐ ์ฐฝ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ผ~ (ํ•œ ๋งˆ๋””๋กœ ์ƒˆ๋กœ๊ณ ์นจ) ์ด๋ผ๋Š” ๋œป.


๋ฐฑ์—”๋“œ(app.py) ํ”„๋ก ํŠธ์—”๋“œ(index.html)์—์„œ ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ์•Œ์•„ ๋ดค๋‹ค.

 

ํ•ด์„์„ ํ•˜๋‹ค๋ณด๋‹ˆ~ ์–˜๋„ค๊ฐ€ ์„œ๋กœ ์–ด๋–ค์‹์œผ๋กœ ์‘๋‹ต์„ ํ•˜๋Š”์ง€ ๊ทธ ํ๋ฆ„์— ๋Œ€ํ•ด์„œ ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ๊ทธ ์‹œ์ž‘์ง€์ ์€ ์ด ๊ณณ์ด๋‹ค.

 

์ œ์ผ ๋งˆ์ง€๋ง‰์— ํ•ด์„ํ•œ ํ•จ์ˆ˜์ค‘์—์„œ

let formData = new FormData()

์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ๊ฑธ ํผ๋ฐ์ดํ„ฐ๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ณ ,

formData.append("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ")

formData๋ฅผ ๋ถ™์—ฌ์ค„๊ฑฐ์•ผ ("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ") ์ด๋Ÿฐํ˜•ํƒœ๋กœ~ ๊ทธ๊ฑธ ์–ด๋””๋‹ค ๋ณด๋‚ด?

 

๋ฐ”๋กœ ์—ฌ๊ธฐ /bucket

 

์ด๊ฑฐ ๋งจ์ฒ˜์Œ ํ•ด์„ํ•œ app.py์—๋„ ์žˆ์—ˆ์ฃ ?

@app.route("/bucket", methods=["POST"])
def bucket_post():
    sample_receive = request.form['sample_give']
    print(sample_receive)
    return jsonify({'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'})

๋ฐ”๋กœ ์ด ์ฝ”๋“œ

 

์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ–๊ณ ์˜จ ํ˜•ํƒœ(form)์ค‘์—~ 'sample_give'์ด๋Ÿฐ์• ๊ฐ€ ์žˆ์œผ๋ฉด

๊ทธ๊ฑธ ๋‚˜๋Š” sample_receive๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๊ทธ data๋ฅผ ๋ฐ›๊ฒ ๋‹ค.

formData.append("sample_give", "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ")

์šฐ๋ฆฌ๊ฐ€ ์‹ธ์˜จ data์— "sample_give" ๊ฐ€ ์žˆ๋„ค.

๊ทธ๋Ÿผ "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ" ์ด ๊ฐ’์„ ์„œ๋ฒ„(๋ฐฑ์—”๋“œ)์ชฝ์œผ๋กœ ์ฃผ๋ฉด์„œ ๋ฐฑ์—”๋“œ๋Š” sample_receive ๋ผ๋Š” ๋ณ€์ˆ˜๋กœ "์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ"๋ฅผ ๋ฐ›๋Š”๊ฑฐ๊ณ 

 

ํ”„๋ฆฐํŠธ(sample_receive)๋ฅผ ํ•œ ๋’ค์—~

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ ์ชฝ์œผ๋กœ {'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'} ์ด๋ ‡๊ฒŒ ๋‚ด๋ ค์ฃผ๊ฒ ๋‹ค.

then((response) => response.json()).then((data) => {
                alert(data["msg"])

๊ทธ๋Ÿผ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋‚ด๋ ค์ค€ {'msg': 'POST ์—ฐ๊ฒฐ ์™„๋ฃŒ!'}์—ฌ๊ธฐ์—์„œ msg๊ฐ’์„ alert์„ ๋„์šฐ๋‹ˆ๊นŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’์€??

 

POST ์—ฐ๊ฒฐ ์™„๋ฃŒ! ๊ฐ€ ์ถœ๋ ฅ์ด ๋œ๋‹ค.


์ œ ์Šค์Šค๋กœ ์ฝ”๋”ฉ์„ ๋ฐฐ์›Œ๊ฐ€๋ฉด์„œ ๊ฐ€์žฅ ํฅ๋ฏธ๋„๊ฐ€ ๋†’์•„์ง€๊ณ , ์ง‘์ค‘๋„๊ฐ€ ์˜ฌ๋ผ๊ฐˆ๋•Œ๋Š”

ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊นจ์šฐ์น˜๊ณ  ๊นจ๋‹ฌ์„ ๋•Œ, ๊ทธ ๋•Œ๊ฐ€ ๊ฐ€์žฅ ์ตœ๊ณ ๋กœ ์ฆ๊ฒ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ์ •๋ฆฌํ•œ ์ด ํ•ด์„์ด ์ €์—๊ฒ ์ตœ๊ณ ์˜ ์ฆ๊ฑฐ์›€์„ ๋งŒ๋“ค์–ด ์ค€ ์ˆœ๊ฐ„๋“ค์˜ ์—ฐ์† ์—ฐ์† ์—ฐ์†์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ํ•ด์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋กœ์˜ ๋„˜๊ฒจ์ฃผ๊ณ  ๋‚ด๋ ค๋ฐ›๋Š” data๋“ค์ด

๊ฐ์ž ์œ„์น˜์—์„œ ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ™œ์šฉ์ด ๋˜๋Š”์ง€

 

๊ทธ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๋ฉด์„œ ๊ต‰์žฅํžˆ ์ฆ๊ฑฐ์› ๊ณ  ์žฌ๋ฐŒ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ์ฝ”๋“œ, ์ฝ”๋”ฉ์„ ๋ฐฐ์šด์ง€ 3์ผ์ฐจ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.[์ฝ”๋ฆฐ์ด] ๊ทธ ์ž์ฒด์ฃ .

 

์•„์ง์€ ๋ฐฐ์šด ์ฝ”๋“œ๋“ค์„ ๋‹น์žฅ ํ™œ์šฉํ•˜๊ธฐ์—๋„ ์„œํˆด๋Ÿฌ์„œ ๊ธ‰๊ธ‰ํ•˜์ง€๋งŒ

์ด๋Ÿฐ์‹์˜ ํ๋ฆ„๋“ค์„ ์ดํ•ดํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ์ฝ”๋“œ ์ง€์‹๋“ค์„ ์Œ“์•„ ๊ฐ„๋‹ค๋ฉด

์ง€๊ธˆ๋ณด๋‹ค ๋” ํฐ ์žฌ๋ฏธ๋“ค์„ ๋Š๋ผ๋Š” ์ˆœ๊ฐ„๋“ค์ด ๋งŽ์ด ์ƒ๊ธฐ๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ

์˜ค๋Š˜๋„ ๋ชฐ๋ผ๋„ ์ฒœ์ฒœํžˆ,

๋Š๋ ค๋„ ๊พธ์ค€ํ•˜๊ฒŒ,

๊ทธ๋ ‡๊ฒŒ ๋‚˜์•„๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.