Vue HTTP 통신

    웹 앱의 HTTP 통신 방법

    HTTP는 브라우저와 서버 간에 테이터를 주고받는 통신 프로토콜(protocol)이다.

    브라우저에서 특정 데이터를 보내달라고 요청을 보내면 서버에서 응답으로 해당 데이터를 보내주는 방식으로 동작한다.

    서버에 '해당 데이터를 보내주세요'라는 메시지를 보내는 게 바로 'HTTP 요청을 보낸다'와 같은 의미이다.

     

    웹 앱 HTTP 통신의 대표적 사례로 JQuery와 Ajax가 있다. Ajax는 서버에서 받아온 데이터를 표시할 때 화면 전체를 갱신하지 않고도 화면의 일부분만 변경할 수 있게 하는 자바스크립트 기법이다. Ajax가 대중화되면서 많은 웹 앱에서 Ajax를 사용하고 있다.

     

    리액트와 앵귤러등에서도 활발히 사용되고 있는 것처럼 뷰에서도 Ajax를 지원하기 위한 라이브러리를 제공하는 데 뷰 프레임워크의 필수 라이브러리로 관리하던 뷰 리소스와 요즘 가장 많이 사용되고 있는 axios(액시오스)이다.

     

    Vue resource(뷰 리소스)

    초기에 코어 팀에서 공식적으로 권하는 라이브러리였으나 2016년 말에 공식적인 지원을 중단하기로 결정하면서 다시 기존에 관리했던 PageKit 팀의 라이브러리로 돌아갔습니다. 그 이유는 HTTP 통신 관련 라이브러리는 뷰 라우팅, 상태관리와 같은 라이브러리와는 다르게 프레임워크에 필수적인 기능이 아니라고 판단했기 때문입니다.

    그럼에도 불구하고 뷰 리소스는 아직 계속 사용할 수 있는 라이브러리입니다. 

     

    axios(액시오스)

    현재 뷰 커뮤니티에서 가장 많이 사용되는 HTTP 통신 라이브러리이다.

    액시오스는 Promise기반의 API 형식이 다양하게 제공되어 별도의 로직을 구현할 필요없이 주어진 API만으로 간편하게 원하는 로직을 구현할 수 있다.

     

    액시오스 설치하기

    CDN을 이용해 설치하는 방법과 NPM을 이용하여 설치하는 방법이 있다.

    CDN -> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 코드를 HTML파일에 추가하면 사용가능

     

    //HTTP GET 요청
    axios.get('URL 주소').then().catch();
    
    //HTTP POST 요청
    axios.post('URL 주소').then().catch();
    
    //HTTP 요청에 따른 옵션 속성 정의
    axios({
    	methods: 'get',
        url: 'URL 주소',
        ...
    })

     

    <html>
    
    <head>
        <title>Vue with Axios Sample</title>
    </head>
    
    <body>
        <div id="app">
            <button v-on:click="getData">프레임워크 목록 가져오기</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            new Vue({
                el: '#app',
                methods: {
                    getData: function () {
                        axios.get('https://raw.githubusercontent.com/joshua1988/doit-vuejs/master/data/demo.json')
                            .then(function (response) {
                                console.log(response);
                            });
                    }
                }
            });
        </script>
    </body>
    
    </html>

    위 코드는 프레임워크 목록 가져오기 버튼을 클릭하여 HTTP GET요청을 보내고 데이터를 받아와서 로그에 출력하는 예제이다. 이 코드를 실행하여 확인하면 알겠지만 response 객체를 확인해보면 data속성이 일반 문자열 형식이 아닌 객체 형태이기 때문에 별도로 JSON.parse()을 사용하여 객체로 변환할 필요가 없다.

     

    이 라이브러리에 대한 자세한 사용방법과 가이드

    뷰 리소스 = www.npmjs.com/package/vue-resource

     

    vue-resource

    The HTTP client for Vue.js

    www.npmjs.com

     

    액시오스 = joshua1988.github.io/vue-camp/vue/axios.html

    댓글