

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用適用於 Node.js 的 X-Ray 開發套件追蹤對下游 HTTP Web 服務的呼叫
<a name="xray-sdk-nodejs-httpclients"></a>

**注意**  
X-Ray 開發套件/協助程式維護通知 – 在 2026 年 2 月 25 日， AWS X-Ray SDKs/協助程式將進入維護模式，其中 AWS 將限制 X-Ray 開發套件和協助程式版本，以僅解決安全問題。如需支援時間表的詳細資訊，請參閱 [X-Ray SDK 和協助程式支援時間表](xray-sdk-daemon-timeline.md)。建議您遷移至 OpenTelemetry。如需遷移至 OpenTelemetry 的詳細資訊，請參閱[從 X-Ray 檢測遷移至 OpenTelemetry 檢測](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)。

當您的應用程式呼叫微服務或公有 HTTP APIs，您可以使用適用於 Node.js 的 X-Ray 開發套件用戶端來檢測這些呼叫，並將 API 做為下游服務新增至服務圖表。

將 `http`或 `https`用戶端傳遞至適用於 Node.js 的 X-Ray 開發套件`captureHTTPs`方法，以追蹤傳出呼叫。

**注意**  
使用協力廠商 HTTP 要求程式庫 (例如 Axios 或 Superagent) 的呼叫會透過 [`captureHTTPsGlobal()` API](https://docs.aws.amazon.com/xray-sdk-for-nodejs/latest/reference/module-http_p.html) 支援，並在使用原生 `http` 模組時，仍會追蹤這些呼叫。

**Example app.js - HTTP 用戶端**  

```
var AWSXRay = require('aws-xray-sdk');
var http = AWSXRay.captureHTTPs(require('http'));
```

若要啟用所有 HTTP 用戶端上的追蹤，請在載入 `http` 前呼叫 `captureHTTPsGlobal`。

**Example app.js - HTTP 用戶端 (全域)**  

```
var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
var http = require('http');
```

當您檢測對下游 Web API 的呼叫時，適用於 Node.js 的 X-Ray 開發套件會記錄子區段，其中包含 HTTP 請求和回應的相關資訊。X-Ray 使用子區段來產生遠端 API 的推斷區段。

**Example 下游 HTTP 呼叫的子區段**  

```
{
  "id": "004f72be19cddc2a",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "name": "names.example.com",
  "namespace": "remote",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  }
}
```

**Example 下游 HTTP 呼叫的推斷區段**  

```
{
  "id": "168416dc2ea97781",
  "name": "names.example.com",
  "trace_id": "1-62be1272-1b71c4274f39f122afa64eab",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "parent_id": "004f72be19cddc2a",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  },
  "inferred": true
}
```