Node.jsでコアHTTPを使用してHTTPクライアントを作成する方法
序章
最近のWebアプリケーションは、タスクを実行するために他のサーバーと通信するのが一般的です。 たとえば、オンラインで本を購入できるWebアプリには、顧客注文サーバー、本の在庫サーバー、および支払いサーバー間の通信が含まれる場合があります。 この設計では、さまざまなサービスがWeb API(プログラムでデータを送受信できる標準形式)を介して通信します。 Node.js アプリでは、HTTPリクエストを行うことでウェブAPIと通信できます。
Node.jsには、httpとhttpsモジュールがバンドルされています。 これらのモジュールには、Node.jsプログラムがHTTPリクエストに応答できるように、HTTPサーバーを作成する機能があります。 また、他のサーバーにHTTPリクエストを送信することもできます。 この重要な機能により、Node.jsプログラマーは、Node.jsを使用して最新のAPI駆動型Webアプリケーションを作成できます。 コアモジュールであるため、使用するためにライブラリをインストールする必要はありません。
このチュートリアルでは、 https
テスト目的で偽のRESTAPIであるJSONプレースホルダーにHTTPリクエストを送信するモジュール。 あなたは作ることから始めます GET
request、データを受信するための標準のHTTPリクエスト。 次に、ヘッダーを追加するなど、リクエストをカスタマイズする方法を確認します。 最後に、あなたは作ります POST
, PUT
、 と DELETE
外部サーバーのデータを変更できるようにリクエストします。
前提条件
-
このチュートリアルでは、Node.jsがインストールされている必要があります。 インストールすると、にアクセスできるようになります
https
チュートリアル全体で使用されるモジュール。 このチュートリアルでは、Node.jsバージョン10.19.0を使用します。 Node.jsをmacOSまたはUbuntu18.04にインストールするには、Node.jsをインストールしてmacOSにローカル開発環境を作成する方法またはPPAを使用したインストールセクションの手順に従います。 X199X] Ubuntu18.04にNode.jsをインストールする方法。 -
HTTPリクエストの送信に使用されるメソッドには、ストリームベースのAPIがあります。 Node.jsでは、ストリームはイベントエミッターのインスタンスです。 ストリームからのデータに応答する方法は、イベントからのデータに応答する方法と同じです。 興味がある場合は、 Node.jsでのイベントエミッターの使用ガイドを読むことで、イベントエミッターに関するより深い知識を得ることができます。
ステップ1—作成 GET
リクエスト
APIを操作するときは、通常、 GET
Webサーバーからデータを取得する要求。 このステップでは、作成する2つの関数を確認します GET
Node.jsでのリクエスト。 コードは、公的にアクセス可能なAPIからユーザープロファイルの JSON arrayを取得します。
The https
モジュールには2つの機能があります GET
リクエスト- get()
しか作れない関数 GET
リクエスト、および request()
他のタイプのリクエストを行う関数。 まず、 get()
関数。
でリクエストを行う get()
を使用したHTTPリクエスト get()
関数の形式は次のとおりです。
https.get(URL_String, Callback_Function) {
Action
}
最初の引数は、リクエスト先のエンドポイントを含む文字列です。 2番目の引数はコールバック関数で、これを使用して応答を処理します。
まず、コーディング環境を設定します。 ターミナルで、このガイドのすべてのNode.jsモジュールを保存するフォルダーを作成します。
- mkdir requests
そのフォルダを入力してください:
- cd requests
テキストエディタで新しいファイルを作成して開きます。 このチュートリアルでは、 nano
ターミナルで利用できるように:
- nano getRequestWithGet.js
Node.jsでHTTPリクエストを行うには、 https
次の行を追加してモジュールを作成します。
const https = require('https');
注::Node.jsには http
と https
モジュール。 それらは同じ機能を持ち、同じように動作しますが、 https
トランスポート層セキュリティ(TLS / SSL)を介してリクエストを行います。 使用しているWebサーバーはHTTPS経由で利用できるため、 https
モジュール。 HTTPのみを含むURLとの間でリクエストを行う場合は、 http
モジュール。
今使用します http
オブジェクトを作成して GET
ユーザーのリストを取得するようにAPIにリクエストします。 テストには、公開されているAPIである JSONPlaceholderを使用します。 このAPIは、リクエストに加えた変更の記録を保持しません。 実サーバーをシミュレートし、有効な要求を送信する限り、モックされた応答を返します。
テキストエディタで次の強調表示されたコードを記述します。
const https = require('https');
let request = https.get('https://jsonplaceholder.typicode.com/users?_limit=2', (res) => { });
関数のシグネチャで述べたように、 get()
関数は2つのパラメーターを取ります。 1つ目は文字列形式でリクエストを行うAPIURLであり、2つ目はHTTP応答を処理するためのコールバックです。 応答からデータを読み取るには、コールバックにコードを追加する必要があります。
HTTP応答にはステータスコードが付属しています。 ステータスコードは、応答がどの程度成功したかを示す番号です。 200〜299のステータスコードは肯定応答であり、400〜599のコードはエラーです。 ステータスコードの詳細については、一般的なHTTPエラーコードのトラブルシューティング方法ガイドをご覧ください。
このリクエストの場合、正常な応答には200ステータスコードが含まれます。 コールバックで最初に行うことは、ステータスコードが期待どおりであることを確認することです。 次のコードをコールバック関数に追加します。
const https = require('https');
let request = https.get('https://jsonplaceholder.typicode.com/users?_limit=2', (res) => {
if (res.statusCode !== 200) {
console.error(`Did not get an OK from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
});
コールバックで使用可能な応答オブジェクトには、 statusCode
ステータスコードを格納するプロパティ。 ステータスコードが200でない場合は、コンソールにエラーを記録して終了します。
次の行に注意してください res.resume()
. パフォーマンスを向上させるためにその行を含めました。 HTTPリクエストを行う場合、Node.jsはリクエストとともに送信されるすべてのデータを消費します。 The res.resume()
メソッドは、Node.jsにストリームのデータを無視するように指示します。 同様に、Node.jsは通常、ガベージコレクションにデータを残す場合よりも迅速にデータを破棄します。これは、アプリケーションのメモリを解放する定期的なプロセスです。
エラー応答をキャプチャしたので、データを読み取るためのコードを追加します。 Node.js応答は、データをチャンクでストリーミングします。 データを取得するための戦略は、データが応答から取得されたときにリッスンし、すべてのチャンクを照合してから、アプリケーションがそれを使用できるようにJSONを解析することです。
次のコードを含めるようにリクエストコールバックを変更します。
const https = require('https');
let request = https.get('https://jsonplaceholder.typicode.com/users?_limit=2', (res) => {
if (res.statusCode !== 200) {
console.error(`Did not get an OK from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Retrieved all data');
console.log(JSON.parse(data));
});
});
新しい変数を作成することから始めます data
それは空の文字列です。 データは、バイトデータまたは文字列を表す数値の配列として格納できます。 このチュートリアルでは、JSON文字列をJavaScriptオブジェクトに変換する方が簡単なので後者を使用します。
作成後 data
変数、イベントリスナーを作成します。 Node.jsは、HTTP応答のデータをチャンクでストリーミングします。 したがって、応答オブジェクトが data
イベントでは、受信したデータを取得して追加します data
変数。
サーバーからすべてのデータが受信されると、Node.jsは close
イベント。 この時点で、に保存されているJSON文字列を解析します data
結果をコンソールに記録します。
これで、Node.jsモジュールがJSON APIと通信し、ユーザーのリストをログに記録できるようになります。これは、3人のユーザーのJSON配列になります。 ただし、最初に行うことができる小さな改善が1つあります。
リクエストできない場合、このスクリプトはエラーをスローします。 たとえば、インターネット接続が失われた場合、リクエストを送信できない場合があります。 HTTPリクエストを送信できない場合にエラーをキャプチャするには、次のコードを追加します。
...
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Retrieved all data');
console.log(JSON.parse(data));
});
});
request.on('error', (err) => {
console.error(`Encountered an error trying to make a request: ${err.message}`);
});
リクエストが行われたが送信できない場合、リクエストオブジェクトは error
イベント。 もし error
イベントは発行されますが、リッスンされていない場合、Node.jsプログラムがクラッシュします。 したがって、エラーをキャプチャするには、イベントリスナーを追加します。 on()
機能し、聞く error
イベント。 エラーが発生した場合は、そのメッセージをログに記録します。
このファイルのコードはこれですべてです。 保存して終了 nano
を押すことによって CTRL+X
.
今、このプログラムを実行します node
:
- node getRequestWithGet.js
コンソールに次の応答が表示されます。
OutputRetrieved all data
[
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: '[email protected]',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: [Object]
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
}
},
{
id: 2,
name: 'Ervin Howell',
username: 'Antonette',
email: '[email protected]',
address: {
street: 'Victor Plains',
suite: 'Suite 879',
city: 'Wisokyburgh',
zipcode: '90566-7771',
geo: [Object]
},
phone: '010-692-6593 x09125',
website: 'anastasia.net',
company: {
name: 'Deckow-Crist',
catchPhrase: 'Proactive didactic contingency',
bs: 'synergize scalable supply-chains'
}
}
]
これは、あなたが首尾よく作ったことを意味します GET
コアNode.jsライブラリを使用してリクエストします。
The get()
使用したメソッドは、Node.jsが提供する便利なメソッドです。 GET
リクエストは非常に一般的なタイプのリクエストです。 Node.jsは request()
任意のタイプの要求を行うためのメソッド。 次に、このチュートリアルでは、 GET
でリクエスト request()
.
でリクエストを行う request()
The request()
メソッドは複数の関数シグネチャをサポートします。 次の例では、これを使用します。
https.request(URL_String, Options_Object, Callback_Function) {
Action
}
最初の引数は、APIエンドポイントを持つ文字列です。 2番目の引数は、リクエストのすべてのオプションを含むJavaScriptオブジェクトです。 最後の引数は、応答を処理するためのコールバック関数です。
と呼ばれる新しいモジュールの新しいファイルを作成します getRequestWithRequest.js
:
- nano getRequestWithRequest.js
作成するコードは、 getRequestWithGet.js
以前に作成したモジュール。 まず、インポートします https
モジュール:
const https = require('https');
次に、を含む新しいJavaScriptオブジェクトを作成します method
鍵:
const https = require('https');
const options = {
method: 'GET'
};
The method
このオブジェクトのキーは、 request()
リクエストが使用しているHTTPメソッドを機能させます。
次に、コードでリクエストを行います。 次のコードブロックは、 get()
方法。 エディターで、次のすべての行を入力します。
...
let request = https.request('https://jsonplaceholder.typicode.com/users?_limit=2', options, (res) => {
if (res.statusCode !== 200) {
console.error(`Did not get an OK from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Retrieved all data');
console.log(JSON.parse(data));
});
});
request.end();
request.on('error', (err) => {
console.error(`Encountered an error trying to make a request: ${err.message}`);
});
を使用してリクエストするには request()
、最初の引数にURLを指定し、2番目の引数にHTTPオプションを持つオブジェクトを指定し、3番目の引数に応答を処理するためのコールバックを指定します。
The options
以前に作成した変数は2番目の引数であり、これがNode.jsに GET
リクエスト。 コールバックは、最初に書き込んだときから変更されていません。
あなたはまた、 end()
の方法 request
変数。 これは、を使用するときに呼び出す必要がある重要なメソッドです。 request()
関数。 リクエストが完了し、送信できるようになります。 これを呼び出さないと、Node.jsはリクエストに追加するデータがまだあると見なすため、プログラムは完了しません。
保存して終了 nano
と CTRL+X
、またはテキストエディタと同等のもの。
ターミナルでこのプログラムを実行します。
- node getRequestWithRequest.js
最初のモジュールと同じ次の出力が表示されます。
OutputRetrieved all data
[
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: '[email protected]',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: [Object]
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
}
},
{
id: 2,
name: 'Ervin Howell',
username: 'Antonette',
email: '[email protected]',
address: {
street: 'Victor Plains',
suite: 'Suite 879',
city: 'Wisokyburgh',
zipcode: '90566-7771',
geo: [Object]
},
phone: '010-692-6593 x09125',
website: 'anastasia.net',
company: {
name: 'Deckow-Crist',
catchPhrase: 'Proactive didactic contingency',
bs: 'synergize scalable supply-chains'
}
}
]
これで、 request()
を作る方法 GET
リクエスト。 この関数を知っておくことが重要です。この関数を使用すると、リクエストを次のようにカスタマイズできます。 get()
メソッドは、他のHTTPメソッドでリクエストを行うようにできません。
次に、を使用してリクエストを構成およびカスタマイズします request()
関数。
ステップ2—HTTPの構成 request()
オプション
The request()
関数を使用すると、最初の引数でURLを指定せずにHTTPリクエストを送信できます。 この場合、URLはに含まれます options
オブジェクト、および request()
この関数シグネチャがあります:
https.request(Options_Object, Callback_Function) {
Action
}
このステップでは、この機能を使用して request()
とともに options
物体。
Node.jsを使用すると、URLを options
リクエストに渡すオブジェクト。 これを試すには、 getRequestWithRequest.js
ファイル:
- nano getRequestWithRequest.js
からURLを削除します request()
唯一の引数が options
変数とコールバック関数:
const https = require('https');
const options = {
method: 'GET',
};
let request = https.request(options, (res) => {
...
次に、次のプロパティをに追加します options
物体:
const https = require('https');
const options = {
host: 'jsonplaceholder.typicode.com',
path: '/users?_limit=2',
method: 'GET'
};
let request = https.request(options, (res) => {
...
1つの文字列URLの代わりに、2つのプロパティがあります。host
と path
. The host
アクセスしているサーバーのドメイン名またはIPアドレスです。 パスは、クエリパラメータ(疑問符の後の値)を含む、ドメイン名の後に続くすべてのものです。
オプションオブジェクトは、リクエストに含まれる他の有用なデータを保持できます。 たとえば、オプションでリクエストヘッダーを指定できます。 ヘッダーは通常、リクエストに関するメタデータを送信します。
開発者がAPIを作成するとき、さまざまなデータ形式をサポートすることを選択できます。 1つのAPIエンドポイントは、JSON、 CSV 、またはXMLでデータを返すことができる場合があります。 これらのAPIでは、サーバーは Accept
正しい応答タイプを判別するためのヘッダー。
The Accept
ヘッダーは、ユーザーが処理できるデータのタイプを指定します。 これらの例で使用されているAPIはJSONのみを返しますが、 Accept
JSONが必要であることを明示的に示すリクエストのヘッダー。
次のコード行を追加して、 Accept
ヘッダ:
const https = require('https');
const options = {
host: 'jsonplaceholder.typicode.com',
path: '/users?_limit=2',
method: 'GET',
headers: {
'Accept': 'application/json'
}
};
ヘッダーを追加することで、Node.jsHTTPリクエストで送信される最も一般的な4つのオプションについて説明しました。 host
, path
, method
、 と headers
. Node.jsはさらに多くのオプションをサポートしています。 詳細については、公式Node.jsドキュメントを参照してください。
入る CTRL+X
ファイルを保存して終了します nano
.
次に、コードをもう一度実行して、オプションのみを使用してリクエストを行います。
- node getRequestWithRequest.js
結果は以前の実行と同じになります。
OutputRetrieved all data
[
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: '[email protected]',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: [Object]
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
}
},
{
id: 2,
name: 'Ervin Howell',
username: 'Antonette',
email: '[email protected]',
address: {
street: 'Victor Plains',
suite: 'Suite 879',
city: 'Wisokyburgh',
zipcode: '90566-7771',
geo: [Object]
},
phone: '010-692-6593 x09125',
website: 'anastasia.net',
company: {
name: 'Deckow-Crist',
catchPhrase: 'Proactive didactic contingency',
bs: 'synergize scalable supply-chains'
}
}
]
APIはプロバイダーごとに異なる可能性があるため、 options
オブジェクトは、さまざまな要件に適応するための鍵であり、データ型とヘッダーは最も一般的なバリエーションの一部です。
これまでのところ、あなたはやっただけです GET
データを取得するためのリクエスト。 次に、あなたは POST
Node.jsでリクエストして、サーバーにデータをアップロードできるようにします。
ステップ3—作成 POST
リクエスト
サーバーにデータをアップロードする場合、またはサーバーにデータを作成させたい場合は、通常、 POST
リクエスト。 このセクションでは、 POST
Node.jsでリクエストします。 で新しいユーザーを作成するようにリクエストします users
API。
とは異なる方法であるにもかかわらず GET
、あなたはあなたを書くときに以前のリクエストからのコードを再利用することができます POST
リクエスト。 ただし、次の調整を行う必要があります。
- でメソッドを変更します
options
に反対するPOST
- JSONをアップロードしていることを示すヘッダーを追加します
- ステータスコードをチェックして、ユーザーが作成されたことを確認します
- 新しいユーザーのデータをアップロードする
これらの変更を行うには、最初にという名前の新しいファイルを作成します postRequest.js
. このファイルをで開く nano
または代替テキストエディタ:
- nano postRequest.js
インポートすることから始めます https
モジュールと作成 options
物体:
const https = require('https');
const options = {
host: 'jsonplaceholder.typicode.com',
path: '/users',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=UTF-8'
}
};
あなたは変更します path
に必要なものと一致する POST
リクエスト。 また、 method
に POST
. 最後に、オプションに新しいヘッダーを追加しました Content-Type
. このヘッダーは、アップロードするデータのタイプをサーバーに通知します。 この場合、UTF-8エンコーディングを使用してJSONデータをアップロードします。
次に、 request()
関数。 これはあなたが作った方法に似ています GET
リクエストしますが、200とは異なるステータスコードを探します。 コードの最後に次の行を追加します。
...
const request = https.request(options, (res) => {
if (res.statusCode !== 201) {
console.error(`Did not get a Created from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Added new user');
console.log(JSON.parse(data));
});
});
強調表示されたコード行は、ステータスコードが201であるかどうかを確認します。 201ステータスコードは、サーバーがリソースを作成したことを示すために使用されます。
これ POST
requestは、新しいユーザーを作成するためのものです。 このAPIの場合、ユーザーの詳細をアップロードする必要があります。 いくつかのユーザーデータを作成し、それをあなたと一緒に送信します POST
リクエスト:
...
const requestData = {
name: 'New User',
username: 'digitalocean',
email: '[email protected]',
address: {
street: 'North Pole',
city: 'Murmansk',
zipcode: '12345-6789',
},
phone: '555-1212',
website: 'digitalocean.com',
company: {
name: 'DigitalOcean',
catchPhrase: 'Welcome to the developer cloud',
bs: 'cloud scale security'
}
};
request.write(JSON.stringify(requestData));
最初に作成した requestData
変数。ユーザーデータを含むJavaScriptオブジェクトです。 あなたのリクエストには含まれていません id
サーバーは通常、新しいデータを保存するときにこれらを生成するため、フィールド。
次に、 request.write()
関数。文字列またはバッファオブジェクトを受け入れて、リクエストと一緒に送信します。 あなたのように requestData
変数はオブジェクトであり、使用した JSON.stringify
文字列に変換する関数。
このモジュールを完了するには、リクエストを終了してエラーを確認してください。
...
request.end();
request.on('error', (err) => {
console.error(`Encountered an error trying to make a request: ${err.message}`);
});
使用する前にデータを書き込むことが重要です end()
関数。 The end()
関数はNode.jsに、リクエストに追加するデータがもうないことを通知し、それを送信します。
保存して終了 nano
を押すことによって CTRL+X
.
このプログラムを実行して、新しいユーザーが作成されたことを確認します。
- node postRequest.js
次の出力が表示されます。
OutputAdded new user
{
name: 'New User',
username: 'digitalocean',
email: '[email protected]',
address: { street: 'North Pole', city: 'Murmansk', zipcode: '12345-6789' },
phone: '555-1212',
website: 'digitalocean.com',
company: {
name: 'DigitalOcean',
catchPhrase: 'Welcome to the developer cloud',
bs: 'cloud scale security'
},
id: 11
}
出力は、要求が成功したことを確認します。 APIは、アップロードされたユーザーデータとそれに割り当てられたIDを返しました。
作り方を学んだので POST
リクエストの場合、Node.jsのサーバーにデータをアップロードできます。 次に試してみます PUT
リクエスト、サーバー内のデータを更新するために使用されるメソッド。
ステップ4—作成 PUT
リクエスト
開発者は PUT
サーバーにデータをアップロードするように要求します。 これは似ているかもしれませんが POST
リクエスト、 PUT
リクエストには別の機能があります。 PUT
リクエストはべき等です—実行できます PUT
複数回リクエストすると、同じ結果になります。
実際には、あなたが書くコードは、 POST
リクエスト。 オプションを設定し、リクエストを行い、アップロードするデータを書き込み、応答を確認します。
これを試すには、 PUT
最初のユーザーのユーザー名を更新するリクエスト。
コードはに似ているので POST
リクエストすると、そのモジュールをこのモジュールのベースとして使用します。 をコピーします postRequest.js
新しいファイルに、 putRequest.js
:
- cp postRequest.js putRequest.js
開催中 putRequest.js
テキストエディタの場合:
- nano putRequest.js
これらの強調表示された変更を行って、 PUT
リクエストする https://jsonplaceholder.typicode.com/users/1
:
const https = require('https');
const options = {
host: 'jsonplaceholder.typicode.com',
path: '/users/1',
method: 'PUT',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=UTF-8'
}
};
const request = https.request(options, (res) => {
if (res.statusCode !== 200) {
console.error(`Did not get an OK from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Updated data');
console.log(JSON.parse(data));
});
});
const requestData = {
username: 'digitalocean'
};
request.write(JSON.stringify(requestData));
request.end();
request.on('error', (err) => {
console.error(`Encountered an error trying to make a request: ${err.message}`);
});
最初に変更します path
と method
のプロパティ options
物体。 path
この場合、更新するユーザーを識別します。 リクエストを行うときは、レスポンスコードが200であるかどうかを確認します。これは、リクエストがOKであることを意味します。 現在アップロードしているデータには、更新しているプロパティのみが含まれています。
保存して終了 nano
と CTRL+X
.
次に、ターミナルでこのNode.jsプログラムを実行します。
- node putRequest.js
次の出力が表示されます。
OutputUpdated data
{ username: 'digitalocean', id: 1 }
あなたは PUT
既存のユーザーの更新をリクエストします。
これまで、データを取得、追加、および更新する方法を学習しました。 APIを介してデータを管理する完全なコマンドを提供するには、次に、 DELETE
サーバーからデータを削除するように要求します。
ステップ5—作成 DELETE
リクエスト
The DELETE
リクエストは、サーバーからデータを削除するために使用されます。 リクエスト本文を持つことができますが、ほとんどのAPIはリクエスト本文を必要としない傾向があります。 このメソッドは、サーバーからオブジェクト全体を削除するために使用されます。 このセクションでは、APIを使用してユーザーを削除します。
作成するコードは、 GET
リクエストなので、そのモジュールをこのモジュールのベースとして使用します。 をコピーします getRequestWithRequest.js
新しいファイルに deleteRequest.js
ファイル:
- cp getRequestWithRequest.js deleteRequest.js
開ける deleteRequest.js
と nano
:
- nano deleteRequest.js
次に、強調表示された部分のコードを変更して、APIの最初のユーザーを削除できるようにします。
const https = require('https');
const options = {
host: 'jsonplaceholder.typicode.com',
path: '/users/1',
method: 'DELETE',
headers: {
'Accept': 'application/json',
}
};
const request = https.request(options, (res) => {
if (res.statusCode !== 200) {
console.error(`Did not get an OK from the server. Code: ${res.statusCode}`);
res.resume();
return;
}
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('close', () => {
console.log('Deleted user');
console.log(JSON.parse(data));
});
});
request.end();
request.on('error', (err) => {
console.error(`Encountered an error trying to make a request: ${err.message}`);
});
このモジュールでは、まず、 path
削除するリソース(最初のユーザー)に対するオプションオブジェクトのプロパティ。 次に、メソッドを次のように変更します DELETE
.
を押して、このファイルを保存して終了します CTRL+X
.
このモジュールを実行して、動作することを確認します。 ターミナルで次のコマンドを入力します。
- node deleteRequest.js
プログラムはこれを出力します:
OutputDeleted user
{}
APIは応答本文を返しませんが、200の応答を受け取ったため、要求はOKでした。
あなたは今、作る方法を学びました DELETE
Node.jsコアモジュールを使用したリクエスト。
結論
このチュートリアルでは、 GET
, POST
, PUT
、 と DELETE
Node.jsでのリクエスト。 ライブラリはインストールされていません。 これらのリクエストは、標準を使用して行われました https
モジュール。 その間 GET
リクエストは、 get()
関数、他のすべてのHTTPメソッドは request()
方法。
あなたが書いたコードは、公開されているテストAPI用に書かれています。 ただし、リクエストの記述方法は、すべてのタイプのAPIで機能します。 APIについて詳しく知りたい場合は、APIトピックページをご覧ください。 Node.jsでの開発の詳細については、Node.jsシリーズのコーディング方法に戻ってください。