Language/JavaScript

[JS] [์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ ์›น] Ajax ๋‹ค๋ค„๋ณด๊ธฐ (GET)

Ella_K 2022. 7. 8. 21:32

๐Ÿ”ฅ ์„œ๋ฒ„ - ํด๋ผ์ด์–ธํŠธ  ํ†ต์‹ 

๐Ÿ‘‰ CRUD

  • API: ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„์™€ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ฒด๊ณ„ [1]
  • Create(์ƒ์„ฑํ•ด์ค˜), Read(๋ถˆ๋Ÿฌ์ค˜), Update(๋ฐ”๊ฟ”์ค˜), Delete(์‚ญ์ œํ•ด์ค˜)๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์–ด๋–ค ์š”์ฒญ ์ข…๋ฅ˜์ธ์ง€ ์‘๋‹ตํ•˜๋Š” ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ [1,2]

 

๐Ÿ‘‰ RESTful API 

CRUD vs REST: What's the Difference? [2]

  • HTTP protocol ์˜ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ์œ„ํ•œ ๊ณ ์œ ํ•œ method (HTTP method)์ธ GET, POST, DELETE, PUT, PATCH ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์„œ๋ฒ„)๊ณผ ํด๋ผ์ด์–ธํŠธ ํ†ต์‹  
  • CRUD์™€ HTTP method๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋Œ€์‘๋  ์ˆ˜ ์žˆ์ง€๋งŒ, REST API๋Š” CRUD๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
CRUD HTTP
CREATE POST/PUT
READ GET
UPDATE PUT/ POST/ PATCH
DELETE DELETE

 

๐Ÿ‘‰ JSON

  • ๋ฐ์ดํ„ฐ ํฌ๋งท
  • ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ์˜ ํ˜•์‹
  • Key : Value๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ

 

๐Ÿ‘‰ GET

์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ ์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ [2]

  • ํ†ต์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ(Read)๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ
  • ex> https://movie.naver.com/movie/bi/mi/basic.nhn?code=161967
์œ„ ์ฃผ์†Œ๋Š” "?" ๊ธฐ์ ์œผ๋กœ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ์ชผ๊ฐœ์ง
'?' ๊ธฐ์ค€์œผ๋กœ ์•ž๋ถ€๋ถ„์€ <์„œ๋ฒ„์ฃผ์†Œ>, ๋’ท๋ถ€๋ถ„์€ [์˜ํ™” ๋ฒˆํ˜ธ]
https://movie.naver.com/movie/bi/mi/basic.nhn ์— code=161967 ์ „๋‹ฌํ•˜์—ฌ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋‹ฌ๋ผ๊ณ  ์š”์ฒญ

 

  • GET ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•
? : "?" ์ดํ›„ ๋ถ€ํ„ฐ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘์„ฑ๋œ๋‹ค.
& : ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์žˆ๋‹ค

ex>  google.com/search?q=์•„์ดํฐ&sourceid=chrome&ie=UTF-8
์œ„ ์ฃผ์†Œ๋Š” google.com์˜ search ์ฐฝ๊ตฌ์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•จ
q = ์•„์ดํฐ (๊ฒ€์ƒ‰์–ด)
sourceid = chrome (๋ธŒ๋ผ์šฐ์ € ์ •๋ณด)
ie = UTF-8 (์ธ์ฝ”๋”ฉ ์ •๋ณด)

 


๐Ÿ”ฅ Ajax ๋‹ค๋ค„๋ณด๊ธฐ

์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ ์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ [2]

  • Ajax๋Š” jQuery๋ฅผ ์ž„ํฌํŠธํ•œ ํŽ˜์ด์ง€์—์„œ๋งŒ ๋™์ž‘ ๊ฐ€๋Šฅ

 

๐Ÿ‘‰ Ajax ๊ธฐ๋ณธ ๊ณจ๊ฒฉ

$.ajax({
  type: "GET", // GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•œ๋‹ค.
  url: "http://spartacodingclub.shop/sparta_api/seoulair", //์š”์ฒญํ•  api url
  data: {}, // ์š”์ฒญํ•˜๋ฉด์„œ ํ•จ๊ป˜ ์ค„ ๋ฐ์ดํ„ฐ (GET ์š”์ฒญ์‹œ์—” ๋น„์›Œ๋‘๊ธฐ)
  success: function(response){ // ์„œ๋ฒ„์—์„œ ์ค€ ๊ฒฐ๊ณผ๋ฅผ response๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด์Œ
    console.log(response) // ์„œ๋ฒ„์—์„œ ์ค€ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด์„œ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
  }
})
GET ์š”์ฒญ์€ url ๋’ค์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ™์—ฌ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
http://naver.com?param=value&m2=value2

POST ์š”์ฒญ์€ data:{} ์— ๋„ฃ์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
data: { param: 'value', param2: 'value2' }.

response
๋Š” json ํ˜•์‹์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

 

๐Ÿ‘‰ Tip

  • ์•„๋ž˜์™€ ๊ฐ™์ด response์˜ ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ console๋กœ ์ฐ์–ด์„œ ํ™•์ธํ•ด๋ณด์ž
success: function(response){ 
  console.log(response) 
}

 

๐Ÿ‘‰ Ajax ํ†ต์‹  ์˜ˆ์‹œ (GET ์š”์ฒญ)

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>jQuery ์—ฐ์Šตํ•˜๊ณ  ๊ฐ€๊ธฐ!</title>

    <!-- jQuery๋ฅผ import ํ•ฉ๋‹ˆ๋‹ค -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <style type="text/css">
        div.question-box {
            margin: 10px 0 20px 0;
        }
        .bad {
            color: red;
            font-weight: bold;
        }
    </style>

    <script>
        function q1() {
            // ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
            $('#names-q1').empty();
            $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/seoulair",
                data: {},
                success: function (response) {
                    let rows = response["RealtimeCityAir"]["row"];
                    for (let i = 0; i < rows.length; i++) {
                        let gu_name = rows[i]['MSRSTE_NM'];
                        let gu_mise = rows[i]['IDEX_MVL'];

                        let temp_html = ''

                        if (gu_mise > 70) {
                            temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
                        } else {
                            temp_html = `<li>${gu_name} : ${gu_mise}</li>`
                        }
                        
                        $('#names-q1').append(temp_html);
                    }
                }
            })
        }
    </script>

</head>

<body>
    <h1>jQuery+Ajax์˜ ์กฐํ•ฉ์„ ์—ฐ์Šตํ•˜์ž!</h1>

    <hr />

    <div class="question-box">
        <h2>1. ์„œ์šธ์‹œ OpenAPI(์‹ค์‹œ๊ฐ„ ๋ฏธ์„ธ๋จผ์ง€ ์ƒํƒœ)๋ฅผ ์ด์šฉํ•˜๊ธฐ</h2>
        <p>๋ชจ๋“  ๊ตฌ์˜ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ‘œ๊ธฐํ•ด์ฃผ์„ธ์š”</p>
        <p>์—…๋ฐ์ดํŠธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ง€์› ๋‹ค ์ƒˆ๋กœ ์”Œ์—ฌ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.</p>
        <button onclick="q1()">์—…๋ฐ์ดํŠธ</button>
        <ul id="names-q1">
        </ul>
    </div>
</body>

</html>

 


Source

  1. ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” IT ์ง€์‹
  2. ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ ๋‚ด์ผ๋ฐฐ์›€๋‹จ ์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ
  3. CRUD vs REST: What's the Difference?