Node.jsでREST APIを呼び出す方法: cURLとの比較
Node.jsは非同期イベント駆動型JavaScriptランタイムであり、ネットワーク通信やHTTPリクエストの処理に適しています。REST APIを呼び出すには、Node.jsの組み込みモジュールであるhttp
やサードパーティライブラリであるaxios
やrequest
を使用することができます。
httpモジュールを使用する
const http = require('http');
const options = {
hostname: 'api.example.com',
port: 443,
path: '/users',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.o n('error', (error) => {
console.error(error);
});
re q.end();
axiosライブラリを使用する
const axios = require('axios');
axios.get('https://api.example.com/users')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(er ror);
});
requestライブラリを使用する
const request = require('request');
request('https://api.example.com/users', (error, response, body) => {
if (error) {
return console.error('Failed to fetch data:', error);
}
console.log(body);
});
cURLとの比較
cURLはコマンドラインツールであり、HTTPリクエストを直接送信することができます。Node.jsのコードと比較すると、cURLはより簡潔で、スクリプトやプログラムを記述する必要がありません。ただし、cURLは非同期処理やエラーハンドリングが制限されています。
curl -X GET https://api.example.com/users
const http = require('http');
const options = {
hostname: 'api.example.com',
port: 443,
path: '/users',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.o n('error', (error) => {
console.error(error);
});
re q.end();
const axios = require('axios');
axios.get('https://api.example.com/users')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(er ror);
});
const request = require('request');
request('https://api.example.com/users', (error, response, body) => {
if (error) {
return console.error('Failed to fetch data:', error);
}
console.log(body);
});
curl -X GET https://api.example.com/users
const http = require('http');
const options = {
hostname: 'api.example.com',
port: 443,
path: '/users',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.o n('error', (error) => {
console.error(error);
});
re q.end();
const axios = require('axios');
axios.get('https://api.example.com/users')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(er ror);
});
const request = require('request');
request('https://api.example.com/users', (error, response, body) => {
if (error) {
return console.error('Failed to fetch data:', error);
}
console.log(body);
});
curl -X GET https://api.example.com/users
rest curl node.js