Node.jsでfetchを使えるようにする


Node.jsでブラウザと同じようにfetchメソッドを使えるようにする「node-fetch」の紹介です。

🐮 インストール手順

プロジェクト直下で次のコマンドを実行します。

yarn add node-fetch

npm install --save node-fetch

🐝 利用方法

GET

まずは通常の書き方。

import fetch from 'node-fetch';

// HTMLの取得
fetch('https://github.com/')
.then(res => res.text())
.then(body => console.log(body));

// JSONの取得
fetch('https://api.github.com/users/github')
.then(res => res.json())
.then(json => console.log(json));

async/awaitを組み合わせた使い方。

import fetch from 'node-fetch';
const url = 'https://api.github.com/users/github';

(async () => {
try {
const response = await fetch(url);
const json = await response.json();
console.log(json.origin);
} catch (error) {
console.log(error);
}
})();

POST

// 通常のPOST
const params = new URLSearchParams();
params.append('a', 1);
fetch('http://httpbin.org/post', { method: 'POST', body: params })
.then(res => res.json())
.then(json => console.log(json));

// JSONのPOST
const body = { a: 1 };
const options = {
method: 'POST',
body: JSON.stringify(body),
headers: { 'Content-Type': 'application/json' },
}
fetch('http://httpbin.org/post', option)
.then(res => res.json())
.then(json => console.log(json));

🎃 fetch APIの概要

fetchメソッドのAPIの概要です。詳細は「node-fetch」を参照ください。

fetch(url[, options])

// オプションとそのデフォルト値
{
// These properties are part of the Fetch Standard
method: 'GET',
headers: {}, // request headers. format is the identical to that accepted by the Headers constructor (see below)
body: null, // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream
redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect

// The following properties are node-fetch extensions
follow: 20, // maximum redirect count. 0 to not follow redirect
timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies)
compress: true, // support gzip/deflate content encoding. false to disable
size: 0, // maximum response body size in bytes. 0 to disable
agent: null // http(s).Agent instance, allows custom proxy, certificate etc.
}

🎉 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍