에서 SPA - [6] 서버에서 데이터 검색

취득 방법 알아보기



JS에서 서버에서 데이터를 얻는 방법에는 여러 가지가 있습니다. 조금 조사한 것만으로
  • XHR XMLHttpRequest : 구식의 방법으로 로우 레벨을 쓰는 느낌
  • fetch API : 비교적 새로운. Chrome에서 말하면 버전 42에서 보인다
  • Ajax 라이브러리 사용하기

    Vue의 권장 사항은 무엇입니까?



    공식 사이트에서는, 뭐, 뭐든지 좋지만 jQuery 그리고 어때? 라는 느낌을 쓰는 방법. superagent의 리타이어에 관한 기사로 2016년이므로 조금 체질지도.

    What Should I Use Then?
    You are free to pick whatever you prefer (even just $.ajax), but as a default recommendation — particularly for new users — we suggest taking a look at Axios. It's currently one of the most popular HTTP client library -resource provides with a very similar API. In addition, it is universal, supports cancellation, and has TypeScript definitions.

    각각 만져 보자.



    커맨드 라인으로 빨리 하고 싶었기 때문에 axios 잡자

    XHR



    미리 axios 패키지를 보관하십시오.
    const axios = require('axios');
    
    let url = 'https://api-staging.megaport.com/v2/locations'
    
    axios.get(url)
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    

    fetch



    사전에 vue-resource 패키지 해 둔다. node 반환 값은 axios 개체
    var fetch = require("node-fetch");
    
    let url = 'your-api-end-point-here';
    
    fetch(url).then((response) => {
      //console.log(response.status);
      console.log(response);
    }).catch(() => {
      console.log("error caught!");
    });
    

    Hack Your Design!에 따르면, 여기 node-fetch를 사용하는 쓰기가 더 현대적이라는 것
    var fetch = require("node-fetch");
    
    let url = 'your-api-end-point-here';
    
    (async() => {
      try {
        const response = await fetch(url);
        //console.log(response.status);
        console.log(response);
      } catch (e) {
        console.log("error!")
      }
    })();
    

    axios


    const axios = require('axios');
    
    let url = 'your-api-end-point-here'
    
    axios.get(url)
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    
    fetch에서하지 않아도 Promiseawait에 상기를 붙이면 움직이고 그 쪽이 node의 준비가 필요 없기 때문에 간단했는지

    빠진 곳


    Chrome DevToolsconsole를 반환하지만,이 경우 어떻게 node에 액세스하는지 잘 모르겠습니다. 일단 fetch를 JSON으로 해 보자.
    fetch(url).then((response) => {
        console.log(response.json()); // to JSON
    }).catch(() => {
        console.log("error!");
    });
    

    여기서 Promise의 반환 값을 Vue로 data 배열에 넣으려고하면 다음과 같이 발생합니다.
    [Vue warn]: Invalid prop: type check failed for prop "data". Expected Array, got Promise.
    
    response의 내용을 확인하면 다음과 같이 되어 있고 Promisedata 아래에 배열로 되어 있다. 점 표기법으로는 액세스 할 수 없습니다.



    접근 방법은 stack overflow에서 발견되었다. Promise를 사용한다.
    fetch(url)
        .then(response => response.json())
        .then(data => console.log(data)) // then で data にアクセス
        .catch(error => console.error(error))
    

    참고로 한 사이트


  • Hack Your Design! - 자바스크립트에서 XHR을 보내는 방법:
  • Qiita - 고맙습니다 XMLHttpRequest, 안녕하세요 fetch
  • ReferenceError: fetch is not defined
  • stack overflow - What does PromiseValue mean in javascript console and how to do I get it

  • 다음 번



    서버의 가치를 얻었으므로 드디어 data에서 사용할 수 있습니다.

    시리즈


  • Vue.js에서 SPA - [1] Element UI로 기본 화면 만들기
  • Vue.js에서 SPA - [2] Element UI로 각 창의 화면 만들기
  • Vue.js에서 SPA - [3] vue-router로 라우팅
  • Vue.js에서 SPA - [4] 구성 요소로 시도
  • Vue.js에서 SPA - [5] 리액티브가 되셨습니까?
  • Vue.js에서 SPA - [6] 서버에서 데이터 검색
  • Vue.js에서 SPA - [7] Vue에서 서버 데이터 검색
  • Vue.js에서 SPA - [8] 백엔드와 잘 작동하려고 시도한 것
  • Vue.js에서 SPA - [9] 이제 CORS와 그 오류를 피하는 방법
  • Vue.js에서 SPA - [10] Safari .. 너 ... 3rd party 쿠키
  • Vue.js에서 SPA - [11] Element UI로 로그인 화면
  • Vue.js에서 SPA - [12] 로그인 : 단일 창에서 투 창으로 화면 전환
  • Vue.js에서 SPA - [13] 모바일 용 OnsenUI에 손을 대다
  • Vue.js에서 SPA - [14] Vue.js와 OnsenUI를 사용한 올레올레 쇼핑 카트 튜토리얼
  • Vue.js에서 SPA - [15] 전세계 사람들과 회의 시간을 결정할 때 유용한 사람
  • Vue.js에서 SPA - [16]
  • 좋은 웹페이지 즐겨찾기