Cách thực hiện các yêu cầu HTTP trong Node.js bằng cách tìm nạp nút

Cach Thuc Hien Cac Yeu Cau Http Trong Node Js Bang Cach Tim Nap Nut



Các yêu cầu HTTP rất quan trọng và được thực hiện để tìm nạp thông tin từ các URL trên toàn cầu, tức là gọi một trang web, v.v. Cách tiếp cận này có hiệu lực khi ứng dụng web cần thiết lập liên lạc với máy chủ web để truy cập tài nguyên. Ví dụ: truy xuất hoặc đăng dữ liệu lên máy chủ web hoặc API.

Trong JavaScript, nó có thể được thực hiện thông qua “ window.fetch() ' phương pháp. Tuy nhiên, trong “ nút.js ”, chức năng này có thể đạt được bằng cách sử dụng nhiều gói, tức là tìm nạp nút, v.v.

Blog này giải thích các lĩnh vực nội dung sau:







'Tìm nạp nút' là gì?

Các ' tìm nạp nút ” tương ứng với một mô-đun nhẹ giúp API tìm nạp có thể truy cập được vào node.js. Mô-đun này cũng cho phép người dùng sử dụng “ tìm về() ” phương thức trong node.js gần giống với JavaScript “ window.fetch() ' phương pháp.



Cú pháp(Phương thức tìm nạp())



tìm về ( địa chỉ [ , tùy chọn ] ) ;

Trong cú pháp này:





  • địa chỉ ” đề cập đến URL của tài nguyên cần được tìm nạp/truy xuất.
  • Các ' tùy chọn Tham số ” là cần thiết khi có nhu cầu sử dụng phương thức “fetch()” ngoài việc tạo “ LẤY ' lời yêu cầu.

Giá trị trả về

Hàm này truy xuất đối tượng Phản hồi bao gồm thông tin liên quan đến phản hồi HTTP như sau:



  • chữ: Truy xuất nội dung phản hồi ở dạng chuỗi.
  • tiêu đề: Trả về một đối tượng bao gồm các trình xử lý phản hồi.
  • json(): Phân tích nội dung phản hồi trong đối tượng JSON.
  • văn bản trạng thái/trạng thái: Bao gồm thông tin liên quan đến mã trạng thái HTTP.
  • Được rồi: Cung cấp “ ĐÚNG VẬY ” nếu trạng thái là mã trạng thái 2xx.

Điều kiện tiên quyết để sử dụng tìm nạp nút

Sau đây là những điều kiện tiên quyết cần được xem xét trước khi bắt đầu với “ tìm nạp nút ”:

  • Đã cài đặt ít nhất hoặc mới nhất so với phiên bản 17.5.
  • Kiến thức cơ bản về JavaScript.

Làm cách nào để thực hiện các yêu cầu HTTP trong node.js bằng cách tìm nạp nút?

Thực hiện các yêu cầu HTTP là một quy trình không đồng bộ vì việc nhận được phản hồi được yêu cầu sẽ mất một chút thời gian. Như vậy có thể có hai phương pháp để sử dụng các quy trình không đồng bộ. Đầu tiên là người dùng có thể đợi phản hồi và sau đó tiếp tục sử dụng mã. Cái còn lại đang thực thi mã song song.

Làm cách nào để bắt đầu với tìm nạp nút?

Trước khi bắt đầu hoặc cài đặt “ tìm nạp nút ” mô-đun, khởi tạo dự án nút với sự trợ giúp của lệnh dưới đây:

npm init -

Việc thực hiện lệnh này sẽ tạo ra một “ gói.json ” trong thư mục hiện tại, như sau:

Bây giờ, hãy cài đặt “ tìm nạp nút ” mô-đun bằng lệnh ghép ngắn sau:

nút cài đặt npm - tìm về

Tuy nhiên, để cài đặt phiên bản mô-đun đích, hãy sử dụng lệnh sau:

nút cài đặt npm - tìm về@ 2.0

Trong trường hợp này, “ 2.0 ” Phiên bản của mô-đun sẽ được cài đặt.

Ghi chú: Trước khi tiếp tục với các ví dụ, hãy tạo một “ chỉ mục.mjs ” trong không gian làm việc sẽ được sử dụng để áp dụng các chức năng.

Ví dụ 1: Gửi Nhận yêu cầu qua nút tìm nạp

Các ' tìm nạp nút ” có thể được sử dụng để lấy văn bản từ máy chủ web hoặc dữ liệu thông qua Rest API.

Ví dụ mã dưới đây được viết bằng “ chỉ mục.mjs ” file tạo một yêu cầu Nhận đơn giản tới trang chủ YouTube:

nhập khẩu tìm về từ 'tìm nạp nút' ;

tìm về ( 'https://youtube.com' )

. sau đó ( độ phân giải => res. chữ ( ) )

. sau đó ( chữ => bảng điều khiển. nhật ký ( chữ ) ) ;

Trong các dòng mã này:

  • Tải “ tìm nạp nút ” mô-đun và truy xuất trang chủ của YouTube thông qua URL được chỉ định mà yêu cầu HTTP được thực hiện.
  • Sau đó, xâu chuỗi “ sau đó() ” phương pháp xử lý phản hồi và dữ liệu từ yêu cầu được thực hiện.
  • Phương thức “then()” trước đây biểu thị việc chờ nhận phản hồi từ máy chủ YouTube và chuyển nó sang định dạng văn bản.
  • Phương thức “then()” sau biểu thị việc chờ đợi kết quả của phép biến đổi trước đó và hiển thị nó trên bảng điều khiển.

đầu ra

Bây giờ, hãy thực thi mã thông qua lệnh ghép ngắn sau:

chỉ số nút. mjs

Việc thực thi lệnh trên sẽ truy xuất toàn bộ đánh dấu HTML của trang chủ YouTube được hiển thị trên bảng điều khiển:

Ví dụ 2: Truy xuất dữ liệu JSON từ API còn lại

Ví dụ này sử dụng “ tìm nạp nút ” để lấy dữ liệu giả mạo thông qua Trình giữ chỗ JSON RestAPI. Chính là như vậy mà “ tìm về() ” phương thức bao gồm URL của máy chủ và chờ phản hồi:

nhập khẩu tìm về từ 'tìm nạp nút' ;

tìm về ( 'https://jsonplaceholder.typicode.com/users' )

. sau đó ( độ phân giải => res. json ( ) )

. sau đó ( json => {

bảng điều khiển. nhật ký ( 'Người dùng mảng đầu tiên ->' ) ;

bảng điều khiển. nhật ký ( json [ 0 ] ) ;

bảng điều khiển. nhật ký ( 'Tên người dùng mảng đầu tiên ->' ) ;

bảng điều khiển. nhật ký ( json [ 0 ] . tên ) ;

} )

Theo khối mã này, hãy thực hiện các bước sau:

  • Phần thân HTTPS bao gồm dữ liệu được định dạng JSON có dữ liệu của người dùng.
  • Sau đó, “ json() ” được áp dụng để gọi các mục riêng lẻ và các giá trị tương ứng.

đầu ra

Áp dụng lệnh ghép ngắn dưới đây để thực thi mã:

chỉ số nút. mjs

Ví dụ 3: Gửi yêu cầu qua nút tìm nạp

Các ' tìm nạp nút ” mô-đun cũng có thể được sử dụng để đăng các yêu cầu thay vì truy xuất chúng. Điều này có thể đạt được thông qua “ tìm về() ” phương thức bao gồm một tham số bổ sung để thực hiện các yêu cầu POST tới máy chủ.

Có nhiều tùy chọn có thể được phân bổ với tham số này. Tuy nhiên, trong trường hợp này, “ phương pháp ',' thân hình ' Và ' tiêu đề ' sẽ được sử dụng. Sau đây là mô tả của từng tùy chọn:

  • Các ' phương pháp Tùy chọn ” đặt loại yêu cầu HTTP, tức là “POST” trong trường hợp này.
  • Các ' thân hình ” tùy chọn bao gồm phần thân của yêu cầu.
  • Các ' tiêu đề Tùy chọn ” chứa tất cả các tiêu đề bắt buộc, tức là “ Loại nội dung ' trong kịch bản này.

Bây giờ, hãy chuyển sang triển khai thực tế việc gửi yêu cầu bài đăng bằng cách thêm một mục mới vào phần giữ chỗ JSON của JSON tất cả ”. Nó được thực hiện bằng cách thêm một mục mới vào danh sách có userID là “476”:

nhập khẩu tìm về từ 'tìm nạp nút' ;

để mọi thứ = {

tên người dùng : 476 ,

địa điểm : 'Đây là Linuxhint' ,

hoàn thành : SAI

} ;

tìm về ( 'https://jsonplaceholder.typicode.com/todos' , {

phương pháp : 'BƯU KIỆN' ,

thân hình : JSON. xâu chuỗi ( tất cả ) ,

tiêu đề : { 'Loại nội dung' : 'ứng dụng/json' }

} ) . sau đó ( độ phân giải => res. json ( ) )

. sau đó ( json => bảng điều khiển. nhật ký ( json ) ) ;

Trong mã này:

  • Trước hết, hãy tạo một đối tượng việc cần làm và chuyển đổi nó thành JSON trong khi thêm nó vào phần nội dung.
  • Tương tự như vậy, bây giờ, hãy chỉ định URL với các tùy chọn bắt buộc là “ tìm về() ” tham số tùy chọn của phương thức.
  • Sau đó, áp dụng “ JSON.stringify() ” để chuyển đổi đối tượng thành chuỗi được định dạng (JSON) trước khi gửi/truyền nó đến máy chủ web.
  • Tiến lên phía trước, thực hiện kết hợp “ sau đó() ” để truy xuất dữ liệu bằng cách chờ phản hồi, chuyển đổi nó thành JSON và đăng nhập vào bảng điều khiển tương ứng.

đầu ra

Thực hiện lệnh được cung cấp dưới đây để thực thi mã:

chỉ số nút. mjs

Mã trạng thái HTTP là gì?

Trước khi chuyển sang ví dụ tiếp theo, hãy đảm bảo rằng nếu phản hồi bao gồm “ 3xx ” mã trạng thái, các bước bổ sung cần được khách hàng thực hiện. Tương tự như vậy, “ 4xx ” mã đại diện cho một yêu cầu không hợp lệ và “ 5xx ” mã tương ứng với lỗi máy chủ.

Ghi chú: Các ' nắm lấy() ” không thể giải quyết các trường hợp được thảo luận ở trên vì quá trình giao tiếp với máy chủ diễn ra theo cách hợp lý. Do đó, một cách tiếp cận hiệu quả để đảm bảo rằng các yêu cầu không thành công sẽ trả về lỗi là xác định hàm phân tích trạng thái HTTP của phản hồi của máy chủ.

Ví dụ 4: Đối phó với các ngoại lệ và hạn chế

Có thể có một số hạn chế hoặc ngoại lệ đối với các yêu cầu đã gửi, tức là các sự cố với Internet, “ tìm về() ” giới hạn chức năng, v.v. Những ngoại lệ này có thể được xử lý bằng cách thêm “ nắm lấy() ' chức năng:

phân tích chức năngTrạng thái ( x ) {

nếu như ( x. Được rồi ) {

trở lại x

} khác {

ném mới Lỗi ( `Trạng thái HTTP liên quan đến phản hồi -> $ { x. trạng thái } ( $ { x. văn bản trạng thái } ) ` ) ;

}

}

tìm về ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. sau đó ( phân tíchTrạng thái )

. sau đó ( x => x. json ( ) )

. sau đó ( json => bảng điều khiển. nhật ký ( json ) )

. nắm lấy ( lỗi => bảng điều khiển. nhật ký ( lỗi ) ) ;

Trong đoạn mã này:

  • Đầu tiên, xác định hàm có tham số đã nêu trước khi phân tích phản hồi để đối phó với các hạn chế gặp phải.
  • Bây giờ, hãy bao gồm “ nếu khác ” để đưa ra lỗi gặp phải hoặc giới hạn tùy chỉnh.
  • Sau đó, tương tự, áp dụng “ tìm về() ” và các phương thức “then()” liên quan để truy xuất dữ liệu bằng cách chờ phản hồi, chuyển đổi nó thành JSON và đăng nhập vào bảng điều khiển.
  • Cuối cùng, các ngoại lệ trong thời gian chạy có thể được xử lý bằng cách đặt “ nắm lấy() ” ở cuối chuỗi lời hứa.

đầu ra

Cuối cùng, hãy chạy lệnh ghép ngắn dưới đây để chạy mã và đưa ra các ngoại lệ phải đối mặt:

chỉ số nút. mjs

Các trường hợp sử dụng khác của “tìm nạp nút”

Các ' tìm nạp nút ” cũng có thể được sử dụng để làm “ Yêu cầu API ' hoặc ' Rút trích nội dung trang web ”. Hãy thảo luận chi tiết về các trường hợp sử dụng này.

Sử dụng tìm nạp nút để thực hiện các yêu cầu API

API có thể được yêu cầu trong một số trường hợp để tìm nạp dữ liệu mục tiêu thông qua nguồn phụ trợ. Các yêu cầu HTTP có thể có nhiều phương thức xác thực, chẳng hạn như sử dụng khóa API trong đó nhà cung cấp API cung cấp khóa chỉ giới hạn cho người dùng. Một cách tiếp cận khác để bảo vệ API có thể thông qua “ Xác thực cơ bản ” trong đó tiêu đề cần được gửi để gọi API.

Sau đây là minh họa cho cách tiếp cận thứ hai, tức là “Xác thực cơ bản” trong yêu cầu bài đăng với sự trợ giúp của “ tìm về() ' phương pháp:

( không đồng bộ ( ) => {

hằng số x = chờ lấy ( 'http://httpbin.org/post' , {

phương pháp : 'BƯU KIỆN' ,

tiêu đề : {

'Ủy quyền' : `$ cơ bản { người anh em ( 'mật khẩu đăng nhập' ) } `

} ,

thân hình : JSON. xâu chuỗi ( {

'chìa khóa' : 'giá trị'

} )

} ) ;

hằng số kết quả = chờ x. chữ ( ) ;

bảng điều khiển. nhật ký ( kết quả ) ;

} ) ( ) ;

Trong phần trình diễn ở trên, tiêu đề được gửi kèm theo “ cơ sở64 ” chuỗi được mã hóa có định dạng “ mật khẩu đăng nhập ”.

Sử dụng tìm nạp nút để Quét Web

Rút trích nội dung trang web ” đề cập đến kỹ thuật trong đó dữ liệu/nội dung được tìm nạp từ các trang web và được phân tích cú pháp. Việc phân tích cú pháp này đạt được thông qua “ cổ vũ ' thư viện.

Dưới đây là phần minh họa việc tìm nạp tiêu đề của trang thông qua “ tìm về() ” phương pháp và “ cổ vũ ' thư viện:

hằng số lib = yêu cầu ( 'reo hò' ) ;

( không đồng bộ ( ) => {

hằng số x = chờ lấy ( 'https://linuxhint.com/' ) ;

hằng số = chờ x. chữ ( ) ;

hằng số $ = lib. trọng tải ( ) ;

bảng điều khiển. nhật ký ( $ ( 'tiêu đề' ) . Đầu tiên ( ) . chữ ( ) ) ;

} ) ( ) ;

Ví dụ này truy xuất ô của “ Linux ” tiêu đề của trang web.

Phần kết luận

Các yêu cầu HTTP trong node.js có thể được thực hiện bằng tìm nạp nút bằng cách gửi yêu cầu nhận, truy xuất dữ liệu JSON từ API REST hoặc gửi yêu cầu đăng bài. Ngoài ra, các trường hợp ngoại lệ và hạn chế có thể được xử lý hiệu quả thông qua “ nắm lấy() ' chức năng.