国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node.js 教程第五篇——request

silencezwm / 913人閱讀

摘要:一個第三方的模塊,可用于發起或請求,可理解成服務端的請求。可用于代簡單的服務器代理,用法和類似。在使用前需要先安裝請求多參數設置請求支持和實現表單上傳。常用多參數設置流

Request

一個第三方的模塊,可用于發起 http 或 https 請求,可理解成服務端的 ajax 請求。可用于代簡單的服務器代理,用法和 ajax 類似。

在使用前需要先安裝 npm install request --save

GET 請求
request.get("https://cnodejs.org/api/v1/topics?page=1&limit=10", (error, response, body) => {
    console.log(body)
})
//or
request("https://cnodejs.org/api/v1/topics?page=1&limit=10", (error, response, body) => {
    console.log(body)
})
多參數設置
exports.get = function(url, options) {
    options = options || {};
    var httpOptions = {
        url: url,
        method: "get",
        timeout: options.timeout || 10000,
        headers: options.headers || default_post_headers,
        proxy: options.proxy || "",
        agentOptions: agentOptions,
        params: options.params || {}
    }
    if(options.userAgent){
        httpOptions.headers = {
            "User-Agent": userAgents[options.userAgent],
        }
    }

    try{
        request.get(httpOptions, function(err, res, body) {
            if (err) {
                options.callback({status: false, error: err})
            } else {
                options.callback({status: res.statusCode == 200, error: res, data: body})
            }
        }).on("error", logger.error);
    } catch(err){
        console.log("http error");
    }
}
POST 請求

request支持application/x-www-form-urlencoded和multipart/form-data實現表單上傳。

application/x-www-form-urlencoded (URL-Encoded Forms)
request.post("http://service.com/upload", {form:{key:"value"}})
// or
request.post("http://service.com/upload").form({key:"value"})
// or
request.post({url:"http://service.com/upload", form: {key:"value"}}, function(err,httpResponse,body){ /* ... */ })
multipart/form-data (Multipart Form Uploads)
var formData = {
  // Pass a simple key-value pair
  my_field: "my_value",
  // Pass data via Buffers
  my_buffer: new Buffer([1, 2, 3]),
  // Pass data via Streams
  my_file: fs.createReadStream(__dirname + "/unicycle.jpg"),
  // Pass multiple values /w an Array
  attachments: [
    fs.createReadStream(__dirname + "/attachment1.jpg"),
    fs.createReadStream(__dirname + "/attachment2.jpg")
  ],
  // Pass optional meta-data with an "options" object with style: {value: DATA, options: OPTIONS}
  // Use case: for some types of streams, you"ll need to provide "file"-related information manually.
  // See the `form-data` README for more information about options: https://github.com/form-data/form-data
  custom_file: {
    value:  fs.createReadStream("/dev/urandom"),
    options: {
      filename: "topsecret.jpg",
      contentType: "image/jpeg"
    }
  }
};
request.post({url:"http://service.com/upload", formData: formData}, function optionalCallback(err, httpResponse, body) {
  if (err) {
    return console.error("upload failed:", err);
  }
  console.log("Upload successful!  Server responded with:", body);
});
常用多參數設置
exports.form_post = function(url, postdata, options) {
    // console.log(`${moment().format()} HttpFormPost: ${url}`)
    return new Promise((resolve, reject) => {
        options = options || {};
        var httpOptions = {
            url: url,
            form: postdata,
            method: "post",
            timeout: options.timeout || 3000,
            headers: options.headers || default_post_headers,
            proxy: options.proxy || "",
            agentOptions: agentOptions
        };
        request(httpOptions, function(err, res, body) {
            if (err) {
                reject(err);
            } else {
                if (res.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(res.statusCode);
                }
            }
        }).on("error", logger.error);
    });
};
request("http://img.zcool.cn/community/018d4e554967920000019ae9df1533.jpg@900w_1l_2o_100sh.jpg").pipe(fs.createWriteStream("test.png"))
request("https://cnodejs.org/api/v1/topics?page=1&limit=10").pipe(fs.createWriteStream("cnodejs.json"))

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94274.html

相關文章

  • Java3y文章目錄導航

    摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...

    KevinYan 評論0 收藏0
  • 「Odoo 基礎教程系列」五篇——從 Todo 應用開始(4)

    摘要:在前面教程中,我們使用了兩種類型的視圖和今天我們將學習使用另一種類型的視圖搜索視圖。大家可以試試看同時應用多個分組,或者將分組和過濾器組合使用,仔細觀察和思考產生的結果。還是老規矩,教程中的代碼會更新在倉庫中。 showImg(https://segmentfault.com/img/bVbgO85?w=1950&h=1300); 在前面教程中,我們使用了兩種類型的視圖——TreeVi...

    xiyang 評論0 收藏0
  • SpringBoot非官方教程 | 五篇:SpringBoot整合 beatlsql

    摘要:整合階段由于沒有對的快速啟動裝配,所以需要我自己導入相關的,包括數據源,包掃描,事物管理器等。另外它的中文文檔比較友好。源碼下載參考資料中文文檔 BeetSql是一個全功能DAO工具, 同時具有Hibernate 優點 & Mybatis優點功能,適用于承認以SQL為中心,同時又需求工具能自動能生成大量常用的SQL的應用。 beatlsql 優點 開發效率 無需注解,自動使用大...

    microelec 評論0 收藏0
  • 工具集核心教程 | 五篇: 利用Velocity模板引擎生成模板代碼

    摘要:歡迎關注我的微信公眾號獲取更多更全的學習資源,視頻資料,技術干貨公眾號回復學習,拉你進程序員技術討論群,干貨資源第一時間分享。公眾號回復全棧,領取前端,,產品經理,微信小程序,等資源合集大放送。公眾號回復面試,領取面試實戰學習資源。 前言 不知道大家有沒有這樣的感覺,在平時開發中,經常有很多dao、service類中存著很多重復的代碼,Velocity提供了模板生成工具,今天我教大家怎...

    leon 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<