1. 程式人生 > >ES6中的fetch請求

ES6中的fetch請求

  1.  基本使用結構:

//測試介面
let url = 'http://jsonplaceholder.typicode.com/posts';
// console.log(fetch(url))//Promise {<pending>} 未執行

fetch(url)
    .then(response => response.json())//把response這個物件解析成正常我的可讀的狀態(為可讀流)
    .then(data => console.log(data))//解析之後打印出來是所有返回的資料 
    .catch(err => console.log(err))//請求失敗後所呼叫,err一般請求超過300,是不會走這一塊的,也就是說只有域名錯了才會走catch
    
  • 2.fetch分為三種請求格式 
  • 本地目錄:
  • 本地文字格式:
  • HTML程式碼:
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link href="https://cdn.bootcss.com/skeleton/2.0.4/skeleton.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h1>Fetch Api sandbox</h1>
            <button id="button1">請求本地文字資料</button>
            <button id="button2">請求本地json資料</button>
            <button id="button3">請求網路介面</button>
            <br><br>
            <div id="outPut"></div>
        </div>
        <script src="fetch.js"></script>
    </body>
    </html>

    js: 文字請求格式;

  • document.getElementById('button1').addEventListener('click',getText);
    // document.getElementById('button2').addEventListener('click',getJson);
    // document.getElementById('button3').addEventListener('click',getExternal);
    
    // 獲取本地純文字資料
    function getText(){
        fetch('text.txt')
            .then((res) => res.text())//返回的是text方法
            .then(data => {
                console.log(data);
                document.getElementById('outPut').innerHTML = data;
            })
            .catch(err => console.log(err))
    }

     點選後的效果:

 本地json請求格式 :

document.getElementById('button2').addEventListener('click',getJson);
// document.getElementById('button3').addEventListener('click',getExternal);



//獲取json資料
function getJson(){
    fetch('jsontext.json')
        .then((res) => res.json())//返回的是json方法
        .then(data => {
            console.log(data);
            let outPut = '';
            data.forEach((post) =>{
                outPut += `<li>${post.title}</li>`
            })
            document.getElementById('outPut').innerHTML = outPut;
        })
        .catch(err => console.log(err))
}

網路介面請 求方式:

document.getElementById('button3').addEventListener('click',getExternal);

//網路請求
function getExternal(){
    fetch('https://api.github.com/users')
    .then((res) => res.json())//返回的是json方法
    .then(data => {
        console.log(data);
        let outPut = '';
        data.forEach((user) =>{
            outPut += `<li>${user.login}</li>`
        })
        document.getElementById('outPut').innerHTML = outPut;
    })
    .catch(err => console.log(err))

}