Nodejs HTTP get請求


HTTP模塊 http.get方法發送請求


const http = require('http');
const urlTool = require('url');
const url = urlTool.format({ protocol: 'http:', host: "localhost:3333", pathname: '/positionlist' });
http.get(url, (res) => {
    let err;
    const { statusCode } = res;
    let rawData = "";

    if (!statusCode === 200) 
        err = new Error("服務器響應失敗");
    if (!/application\/json/.test(res.headers["content-type"]))
         err = new Error("數據格式錯誤,需要json格式");
    if (err) {
        console.log(err);
        //釋放內存
        res.resume();
        return;
    }

    // chunk是16進制BUFFER數據,需要轉成字符打印
    res.on("data", (chunk) => {
        rawData += chunk;
    });

    //監聽請求結束
    res.on("end", () => {
        try {
            console.log(rawData);
        } catch (e) {
            console.log(e);
        }
    });
}).on("error", (error) => {
    console.log(error);
});


/* 
    http.get(url,callback(res){}):
   這里使用的是node內置模塊url來根據參數對象合成參數

   1 判斷狀態碼是不是200
   2 判斷服務器響應頭的content-type是不是json格式
   3 如果有錯誤就釋放內存
   4 trycatch打印數據到node命令行
   
   // console.log(res.headers["content-type"]);//響應的數據格式和字符編碼:application/json; charset=utf-8
   
   var data = "";
   res.on("data",(chunk)=>{
       data += chunkl;
   });
   chunk是16進制數據,<Buffer 5b 0a 20 20 7b 0a 20 20 20 20 22 6c 6f 67 67 65 72 22 3a ... >
   和空字符串相加的意義在於轉換成字符串並輸出,只是換一種方式展示
*/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM