Node.js请求的速查表

请问 “request” 是什么意思?

引入

npm info request # バージョン確認
npm install request

The format

const request = require('request');

request(options, function (error, response, body) {
  // リクエスト結果の処理
});

除了其他的格式以外,我喜欢可以通过选项来进行各种变化的格式。

发送 HTTP 请求的模块。
通过设置选项,可以发送各种请求。
也有官方选项,我无数次陷入了其中,而不自知。

由于嵌套过深的原因,我总是承诺做到这一点。顺便说一下,这也是一种备忘录。

function httpRequest(options) {
  return new Promise((resolve, reject) => {
    request(options, function (error, response, body) {
      let ret = {
        headers: response.headers,
        body: body,
        error: error,
        href: response.request.uri.href, // promise.all したときリクエスト元を特定するために設定
        status: response.statusCode,
      }

      if (error) {
        reject(ret);
      } else {
        resolve(ret);
      }
    });
  });
}

Promise.resolve()
  .then(function(value) {
    var header = {
    }
    var data = {
    }
    var options = {
    }
    return httpRequest(options); // リクエスト1回目

  })
  .then(function(value){
    // リクエスト結果の処理
    return httpRequest(options); // リクエスト2回目
  })
  .then(function(value){
    // リクエスト結果の処理
  })
  .catch(function(reason) {
    // エラー、rejectしたときの処理
  });

求中文的同义句,仅需要一种选项:

备忘单

  process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0; // オレオレ証明書ドメインへリクエストするとき。curl の --insecure と同じ

  var jar = request.jar(); // cookieを使うとき

  var header = {
//    'Content-type': 'application/x-www-form-urlencoded', // form のときつけてくれる
//    'Content-type': 'application/json',  // jsonのときつけてくれる
    Authorization: 'Bearer beabea', // Basic 認証はここに書いてはいけない
  }
  var data = {
    honya: 'honya data',
  }
  
  var options = {
    url: 'http://example.com',
    method: 'GET', 
    headers: header,
    followAllRedirects: true, // 3xxが返ってきたとき、リダイレクトする。
    jar: jar,  // cookieを使うとき
    auth: [ // Basic認証するとき
      user: 'username',
      password: 'password',
    ],
    qs: data, // GET のとき query stringをurlにつけてくれる
    form: data, // form-urlencoded で送るとき。Content-type ヘッダもつけてくれる
    json: data, // jsonで送るとき。Content-type ヘッダもつけてくれる
    proxy: 'http://userid:passuwd@proxy.com:8080/', // proxyがあるとき
  }

每次上瘾时,都会不断添加。

当事情复杂时,寻找相关功能。

当你觉得很麻烦的时候,不要费力地一直写下去,而是去寻找功能。

迄今为止的迷恋

    • jar を知らず、ヘッダからset-cookieを取り出して、次のリクエストに入れてた。(動く)

 

    • basic認証するとき、Authorizatioinヘッダにbase64した値を設定してた。(動かない)

 

    • getパラメータをhttp_build_queryみたいな関数を作って、urlにつけてた。(動く)

 

    followAllRedirects を知らず、3xx が返ったときは、またリクエストしてた。(動く)

请求-承诺

使用request-promise时,发现它只返回body,并且在出现4xx错误时会跳转到catch,所以使用起来很不方便。

“axios” (只需要一种选项)

当请求到达自签名证书的域时,设置无效。 process.env[“NODE_TLS_REJECT_UNAUTHORIZED”] = 0

要使证书无法验证,需要完全改变描述。

广告
将在 10 秒后关闭
bannerAds