[Vue] HTTP 통신

2020. 2. 13. 17:35·Vue
참고 : Vue.js 입문책을 읽고 학습한 내용을 블로그에 정리한 글이므로 내용상 오류가 있을 수 있습니다. 
        오류가 있다면 댓글 남겨주시면 감사하겠습니다.

HTTP(HyperText Transfer Protocol) 통신

  • HTTP는 브라우저와 서버 간에 데이터를 주고받는 통신 프로토콜(규칙)
  • 브라우저에서 특정 데이터를 보내달라고 요청(request)을 보내면 서버에서 응답(response)으로 해당 데이터를 보내주는 방식으로 동작
  • Vue에서 HTTP통신의 대표적인 사례는 액시오스(axios)

액시오스(axios)

  • Vue에서 가장 많이 사용되는 HTTP통신 라이브러리
  • axios는 promise기반의 API형식이 다양하게 제공되어 별도의 로직이 필요없어서 쉽게 구현 가능
      // HTTP GET 요청
      // then() 데이터를 정상적으로 받아올 때 실행되는 로직
      // catch() 데이터를 받아올 때 오류가 발생하면 실행되는 로직

      axios.get('URL 주소').then().catch()
      // HTTP post 요청
      
      axios.post('URL 주소').then().catch()
      // 자세한 옵션을 직접 정해서 HTTP 요청
      
      axios({
        method:'HTTP요청 방식',
        url:'URL 주소',

        ...(옵션 속성)
        
      })

 

예제) 강아지 종류

    <div id="test">
      <button v-on:click="getData">강아지 종류</button>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- Vue - CDN -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <!-- Vue Axios - CDN -->

    <script>

    new Vue({
      el:'#test',
      methods: {
        getData: function(){
          axios.get('https://dog.ceo/api/breeds/list/all')
          .then(function(response){
            console.log(response);
          });
        }
      }
    });

    </script>

 

1. div태그 안에 있는 버튼(강아지 종류) 클릭

2. URL주소에 HTTP get방식으로 데이터 요청

3. 데이터 응답 성공하면 .then(response) 함수에 있는 console 내용 실행

 

출력

 

(버튼 클릭 전)

(버튼 클릭 후)

 

(주의)

axios를 사용하여 데이터에 접근할때는 화살표함수 사용

(일반 함수)

  data(){
    return {
      result: []
    }
  },
  methods: {
    getData: function(){
      axios.get('https://dog.ceo/api/breeds/list/all')
      .then(function(response) {
        console.log(response)
        this.result = response
      })
    }
  }

(화살표 함수)

  data(){
    return {
      result: []
    }
  },
  methods: {
    getData: function(){
      axios.get('https://dog.ceo/api/breeds/list/all')
      .then(response => {
        console.log(response)
        this.result = response
      })
    }
  }

 

'Vue' 카테고리의 다른 글

vue.js(개발환경)  (0) 2020.12.02
[Vue] 바인딩 v-bind:(style, class)  (0) 2020.04.10
[Vue] 라우터(기초)  (0) 2020.01.31
[Vue] 컴포넌트  (0) 2020.01.30
[Vue] 인스턴스  (0) 2020.01.29
'Vue' 카테고리의 다른 글
  • vue.js(개발환경)
  • [Vue] 바인딩 v-bind:(style, class)
  • [Vue] 라우터(기초)
  • [Vue] 컴포넌트
꾸준2
꾸준2
  • 꾸준2
    꾸준2
    꾸준2
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 복습 프로젝트 (3)
      • 어드민 프로젝트 (4)
      • 프로젝트 리팩토링 (4)
      • Database (0)
      • Java Library (2)
      • Java (4)
      • Java(JVM) (1)
      • 자바 문제 (13)
        • 이론 (6)
        • 실습 (7)
      • IDE (2)
        • IntelliJ (2)
      • 인강 (13)
        • SpringBoot(JPA활용1) (0)
        • 자바(기본편) (6)
        • 자바(중급1편) (3)
        • 자바(중급2편) (1)
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편 (3)
      • Network (2)
      • Node (3)
      • CS (0)
      • amCharts4 (5)
      • 오류 모음 (4)
        • 리눅스 (1)
      • 기타지식 (2)
      • 자주 사용하는 기능 (4)
      • Vue (11)
      • Javascript (13)
      • Javascript-메서드 (3)
      • CSS (6)
      • 라이브러리 (4)
      • 자료구조 (11)
      • 알고리즘 (4)
      • Vue-프로젝트 (20)
      • Vue-bitcoin프로젝트 (6)
      • 블로그클론 프로젝트 (11)
      • 면접 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
꾸준2
[Vue] HTTP 통신
상단으로

티스토리툴바