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
要使证书无法验证,需要完全改变描述。