javascript

[JS]Fetch란?

개발 공주 2023. 5. 18. 22:05
728x90

JavaScript에서 서버로 네트워크 요청을 보내고 응답을 받을 수 있도록 해주는 매서드이다.

//Fetch 기본 골격
fetch("여기에 URL을 입력").then(res => res.json()).then(data => {
		console.log(data)
})

fetch("여기에 URL을 입력") // 이 URL로 웹 통신을 요청한다. 괄호 안에 다른 것이 없다면 GET!
	.then(res => res.json()) // 통신 요청을 받은 데이터는 res라는 이름으로 JSON화 한다
	.then(data => { 
		console.log(data) // 개발자 도구에 찍어보기
	}) // JSON 형태로 바뀐 데이터를 data라는 이름으로 붙여 사용한다
  • Fetch 코드 설명
    • fetch("여기에 URL을 입력") ← 이 URL로 웹 통신 요청을 보낼 거야!
      • ← 이 괄호 안에 URL밖에 들어있지 않다면 기본상태인 GET!
    • .then() ← 통신 요청을 받은 다음 이렇게 할 거야!
    • res ⇒ res.json()
      • ← 통신 요청을 받은 데이터는 res 라는 이름을 붙일 거야(변경 가능)
      • ← res는 JSON 형태로 바꿔서 조작할 수 있게 할 거야!
    • .then(data ⇒ {}) ←JSON 형태로 바뀐 데이터를 data 라는 이름으로 붙일거야
리마인드 GET 요청은,
url뒤에 아래와 같이 붙여서
데이터를 가져갑니다. http://naver.com?param=value&param2=value2 POST 요청은,
data : {} 에 넣어서
데이터를 가져갑니다. data: { param: 'value', param2: 'value2' },

예시) 한번 해보도록 해보자^^ (꼭ㅋ)

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

<head>
    <meta charset="UTF-8">
    <title>Fetch 연습하고 가기!</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;
        }

        table {
            border: 1px solid;
            border-collapse: collapse;
        }

        td,
        th {
            padding: 10px;
            border: 1px solid;
        }

        .red {
            color: red;
        }
    </style>

    <script>
        function q1() {
            fetch("http://spartacodingclub.shop/sparta_api/seoulbike").then(response => response.json()).then(data => {
                $('#names-q1').empty()
                let rows = data['getStationList']['row']
                rows.forEach(a => {
                    let name = a['stationName']
                    let rack = a['rackTotCnt']
                    let bike = a['parkingBikeTotCnt']

                    let temp_html = ``

                    if (bike < 5) {
                        temp_html = `<tr class="red">
                                            <td>${name}</td>
                                            <td>${rack}</td>
                                            <td>${bike}</td>
                                        </tr>`
                    } else {
                        temp_html = `<tr>
                                            <td>${name}</td>
                                            <td>${rack}</td>
                                            <td>${bike}</td>
                                        </tr>`
                    }

                    $('#names-q1').append(temp_html)
                })
            })

        }
    </script>

</head>

<body>
    <h1>Fetch 연습하자!</h1>

    <hr />

    <div class="question-box">
        <h2>2. 서울시 OpenAPI(실시간 따릉이 현황)를 이용하기</h2>
        <p>모든 위치의 따릉이 현황을 보여주세요</p>
        <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
        <button onclick="q1()">업데이트</button>
        <table>
            <thead>
                <tr>
                    <td>거치대 위치</td>
                    <td>거치대 수</td>
                    <td>현재 거치된 따릉이 수</td>
                </tr>
            </thead>
            <tbody id="names-q1">
                <tr>
                    <td>102. 망원역 1번출구 앞</td>
                    <td>22</td>
                    <td>0</td>
                </tr>
                <tr>
                    <td>103. 망원역 2번출구 앞</td>
                    <td>16</td>
                    <td>0</td>
                </tr>
                <tr>
                    <td>104. 합정역 1번출구 앞</td>
                    <td>16</td>
                    <td>0</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>

</html>

'javascript' 카테고리의 다른 글

[JS]Javascript & JQuery  (1) 2023.05.18