HTML, CSS, JavaScript

rest api 활용하기

JJJaewon 2021. 11. 5. 01:12
반응형

ajax를 이용하여 POST, PUT, DELETE는 어렵지 않게 구현할 수 있다. 그러나 항상 GET으로 json을 받아와서 화면에 어떻게 뿌리는 지 잘 몰라 thymeleaf를 이용하여 렌더링 하곤 했었다. 이를 제이쿼리를 통해 해결했다(물론 자바스크립트만으로도 가능하다)

$(function() {
        $.ajax({
            url: '/api/board',
            method: 'GET',
            dataType: 'json'
        }).done(function(json) {
            let boardBody = document.getElementById('boardBody');

            for (const key in json) {
                boardBody.innerHTML +=
                    '<tr>' +
                    '<td>' + json[key].id + '</td>' +
                    '<td><a href="/' + json[key].id + '">' + json[key].title + '</a></td>' +
                    '<td>' + json[key].content + '</td>' +
                    '<td>' + json[key].writer + '</td>' +
                    '</tr>';
            }
        })
    })

.done은 function을 필요로 하는데, 이때 function에 매개변수를 지정해 두면 서버에서 보낸 json 데이터를 받을 수 있다.

하지만 이렇게 하면 모든 페이지에서 get을 실행하여 데이터를 받아온다는 문제가 생긴다. 이는 다음과 같이 해결할 수 있다.

 

if (document.getElementById("boardBody") !== null) {
    $(function() {
        $.ajax({
            url: '/api/board',
            method: 'GET',
            dataType: 'json'
        }).done(function(json) {
            let boardBody = document.getElementById('boardBody');

            for (const key in json) {
                boardBody.innerHTML +=
                    '<tr>' +
                    '<td>' + json[key].id + '</td>' +
                    '<td><a href="/' + json[key].id + '">' + json[key].title + '</a></td>' +
                    '<td>' + json[key].content + '</td>' +
                    '<td>' + json[key].writer + '</td>' +
                    '</tr>';
            }
        })
    })
}

처음에 조건문으로 특정 id를 찾고, 있으면 그 때 데이터를 받아오게 한다. 이렇게 하면 다른 페이지에서는 이 코드가 작동하지 않는다.

반응형