Nhảy tới nội dung

Node http request

Node http request được thiết kế để thực hiện các yêu cầu HTTP đến các dịch vụ web hoặc API bên ngoài. Nó hỗ trợ nhiều phương thức HTTP, loại dữ liệu, xác thực và quản lý linh hoạt các yêu cầu và phản hồi.


Cài đặt cho node http request

IMG2

1. Tên

Trường để chỉ định tên của node.
Tên được hiển thị trong không gian làm việc và giúp dễ dàng xác định node.
Nếu để trống, node sẽ được gọi là http request.

Ví dụ:

  • Tên node: Lấy Dữ Liệu Thời Tiết

2. Phương thức

Phương thức HTTP sẽ được sử dụng cho yêu cầu. Lựa chọn phương thức phụ thuộc vào loại thao tác cần thực hiện.

Các phương thức có sẵn:

  • GET: Lấy dữ liệu.
  • POST: Gửi dữ liệu.
  • PUT: Cập nhật dữ liệu.
  • DELETE: Xóa dữ liệu.
  • PATCH: Cập nhật một phần dữ liệu.
  • HEAD: Lấy tiêu đề phản hồi.
  • OPTIONS: Lấy thông tin về API.

Ví dụ:

  • Phương thức: POST

3. Liên kết

Trường để chỉ định một URL tĩnh mà yêu cầu sẽ được gửi đến.
Nếu địa chỉ cần được thiết lập động, nó có thể được truyền vào msg.url.

Ví dụ:

  • Liên kết: https://api.example.com/data

4. Dữ liệu

Xác định cách dữ liệu đầu vào sẽ được thêm vào yêu cầu HTTP. Các tùy chọn sau có sẵn:

  1. Bỏ qua:
    Dữ liệu đầu vào sẽ không được sử dụng trong yêu cầu. msg.payload, nếu tồn tại, sẽ bị bỏ qua.

    Ví dụ:
    Nếu msg.payload chứa một đối tượng JSON, nó sẽ không được bao gồm trong yêu cầu.


  1. Thêm vào tham số truy vấn:
    Dữ liệu từ msg.payload sẽ được chuyển đổi thành các tham số truy vấn và thêm vào URL.

    Ví dụ:
    Nếu msg.payload chứa:

    {
    "key1": "value1",
    "key2": "value2"
    }

    Nếu Liên kết được chỉ định là http://example.com/api, yêu cầu cuối cùng sẽ là:
    GET http://example.com/api?key1=value1&key2=value2.


  1. Gửi dưới dạng thân yêu cầu:
    Dữ liệu từ msg.payload sẽ được gửi trong thân của yêu cầu. Tùy chọn này phù hợp cho các phương thức như POST, PUT, và PATCH, nơi dữ liệu thường được gửi trong thân.

    Ví dụ:
    Nếu msg.payload chứa:

    {
    "name": "John Doe",
    "email": "john.doe@example.com"
    }

    Nếu phương thức yêu cầu là POST, dữ liệu sẽ được gửi trong thân của yêu cầu với nội dung phù hợp.

5. Trả về

Xác định định dạng mà node sẽ xử lý phản hồi từ máy chủ.

Tùy chọn:

  • Chuỗi UTF-8: Phản hồi được chuyển đổi thành chuỗi (mặc định).
  • Buffer: Phản hồi được trả về dưới dạng đối tượng Buffer (hữu ích cho dữ liệu nhị phân như hình ảnh hoặc tệp).
  • JSON: Nếu phản hồi của máy chủ ở định dạng JSON, nó sẽ tự động được chuyển đổi thành đối tượng JavaScript.

Ví dụ:

  • Nếu chọn JSON, phản hồi:
    {"status": "ok", "value": 42}
    sẽ được chuyển đổi thành:
    msg.payload = { status: "ok", value: 42 };

6. Xác thực

Node hỗ trợ các cơ chế xác thực tích hợp sẵn.

Xác thực cơ bản

  • Tên người dùng: Tên người dùng.
  • Mật khẩu: Mật khẩu.

Bearer Token

  • Token: Mã truy cập.

Digest

  • Tên người dùng: Tên người dùng.
  • Mật khẩu: Mật khẩu.

Đầu vào

Node http request chấp nhận một đối tượng tin nhắn msg với các tham số sau:

  1. msg.url: URL cho yêu cầu (nếu không được chỉ định trong cài đặt node).
  2. msg.method: Phương thức HTTP (nếu không được chỉ định trong cài đặt node).
  3. msg.payload: Thân của yêu cầu (được sử dụng cho các phương thức POST, PUT, PATCH).
  4. msg.headers: Tiêu đề yêu cầu HTTP (đối tượng).

Đầu ra

Node trả về một đối tượng msg với thông tin về yêu cầu đã thực hiện:

  1. msg.payload: Dữ liệu phản hồi từ máy chủ.
  2. msg.statusCode: Mã trạng thái HTTP của phản hồi (ví dụ: 200 hoặc 404).
  3. msg.headers: Tiêu đề phản hồi.
  4. msg.responseUrl: URL mà yêu cầu đã được thực hiện.
  5. msg.error: Mô tả lỗi (nếu yêu cầu thất bại).

Ví dụ sử dụng

Ví dụ 1: Thực hiện yêu cầu GET

Cài đặt node:

  • Phương thức: GET
  • URL: https://api.weatherapi.com/v1/current.json?key=API_KEY&q=London

Luồng:

[inject] ---> [http request] ---> [debug]

Kết quả: Node sẽ trả về JSON với thời tiết hiện tại.


Ví dụ 2: Gửi dữ liệu qua POST

Cài đặt node:

  • Phương thức: POST
  • URL: https://api.example.com/devices
  • Dữ liệu: JSON

Luồng:

[function] ---> [http request] ---> [debug]

Mã trong node function:

msg.payload = {
deviceId: "sensor123",
status: "active"
};
msg.headers = { "Content-Type": "application/json" };
return msg;

Kết quả: Dữ liệu sẽ được gửi, và node sẽ trả về phản hồi từ máy chủ.


Ví dụ 3: URL động và xác thực

Cài đặt node:

  • URL: (để trống)

Luồng:

[function] ---> [http request] ---> [debug]

Mã trong node function:

msg.url = "https://api.example.com/user/123";
msg.headers = { Authorization: "Bearer YOUR_TOKEN" };
return msg;

Kết quả: Node sẽ thực hiện yêu cầu đến URL đã chỉ định với mã xác thực.