Nodejs http NHẬN
Thực hiện các yêu cầu HTTP là một trong những công việc hàng ngày được thực hiện bằng cách sử dụng Node. js. Bạn sẽ nhận được một bộ thư viện khổng lồ bao gồm các mô-đun cho các mục đích khác nhau. Một trong những module thường được sử dụng của Node. js là mô-đun HTTP/HTTPS. Hầu hết các nhà phát triển tìm kiếm mô-đun này trong khi di chuyển sang môi trường mới, vì các yêu cầu HTTP/HTTPS là chức năng cốt lõi để bất kỳ ứng dụng nào hoạt động chính xác. Với nút tốt nhất. js, bạn có thể hiểu rõ tất cả những điều cơ bản Show
Nếu bạn không muốn sử dụng mô-đun HTTP/HTTPS, bạn có thể sử dụng bất kỳ gói npm nào có sẵn để giải quyết mục đích tạo yêu cầu HTTP của mình. Trong bài viết này, chúng tôi sẽ nêu bật các bước đơn giản để thực hiện yêu cầu HTTP với sự trợ giúp của mô-đun HTTP trên máy chủ web Node. Mô-đun này là một mô-đun tích hợp với Nút. js và các gói npm, chẳng hạn như Axios, Got SuperAgent và tìm nạp nút điều kiện tiên quyếtBạn không thể bắt đầu làm việc với Node. js với thiết lập môi trường làm việc phù hợp. Bạn cần đáp ứng một số điều kiện tiên quyết trước khi đi sâu vào phần viết mã. Vì vậy, hãy xem bạn cần duy trì những điều kiện nào để bắt đầu viết mã với Node. js
Nhận yêu cầu HTTP(S)Mô-đun HTTP là mô-đun mặc định trong thư viện chuẩn của Node. js. Bạn có thể sử dụng mô-đun này và bắt đầu mã hóa mà không cần cài đặt và quản lý các phụ thuộc bên ngoài. Tuy nhiên, trong khi sử dụng nó, bạn sẽ gặp phải một số thách thức vì nó không phải là một mô-đun thân thiện với người dùng so với các mô-đun khác. Chúng tôi đã sử dụng một số ví dụ từ GitHub, kho lưu trữ mã nguồn mở của tất cả các mã, để bạn hiểu rõ hơn. Ở đây, chúng tôi đang thực hiện một yêu cầu GET bằng cách sử dụng tùy chọn máy khách HTTP bằng cách gọi dữ liệu được lưu trữ từ JSONPlaceholder giả API. như một phản hồi cho yêu cầu đã hoàn thành, nó sẽ gửi dữ liệu của mười người dùng cùng với tên và ID của họ. trong bài viết này, chúng tôi đã đề cập đến các loại ví dụ khác nhau hiển thị dựa trên gọi lại, dựa trên lời hứa và không đồng bộ/chờ đợi. Năm phương pháp khác nhau được thảo luận để thực hiện lệnh gọi GET HTTP tới API trình giữ chỗ. Nút. js cung cấp một mô-đun tích hợp HTTP để thực hiện một số tác vụ liên quan đến HTTP nhằm giúp công việc của bạn dễ dàng hơn. Trước khi thảo luận thêm, bạn phải xem xét các điểm sau về mô-đun HTTP/HTTPS
Bất chấp những thách thức trên, mô-đun HTTP/HTTPS rất hữu ích vì bạn sẽ được cứu bằng cách loại bỏ độ tin cậy của một số phụ thuộc Mô-đun yêu cầuMô-đun yêu cầu là tùy chọn thân thiện với người dùng hơn mô-đun HTTP để thực hiện lệnh gọi HTTPS. Ngay cả những người cộng đồng đang xem xét nó. Tuy nhiên, không giống như mô-đun HTTP, bạn cần cài đặt mô-đun yêu cầu dưới dạng gói npm. Nhấn lệnh sau từ thiết bị đầu cuối để cài đặt mô-đun yêu cầu bằng npm yêu cầu cài đặt npm Tuy nhiên, mô-đun này không còn được dùng nữa sau năm 2020 vì không có thay đổi nào được thực hiện đối với mô-đun này. Sau khi cài đặt mô-đun yêu cầu, hãy chạy lệnh sau để xác minh phiên bản yêu cầu phiên bản npm Mô-đun này hỗ trợ các cuộc gọi và chuyển hướng HTTPS theo mặc định. Trong ví dụ dưới đây, mã nằm trong phần thân yêu cầu của mã Ví dụ- const request = require('request'); //python requests body request('https://jsonplaceholder.typicode.com/users', { json: true }, (err, res, body) => { if (err) { return console.log(err); } console.log(body.url); console.log(body.explanation); }); đăng nội dung yêu cầu với Curl Nếu bạn muốn đăng dữ liệu trong nội dung thư yêu cầu bằng Curl, bạn phải chuyển dữ liệu cần thiết cho Curl. Sử dụng công tắc dòng lệnh -d hoặc –data, bạn có thể thực hiện việc này. Với sự trợ giúp của tiêu đề Kiểu nội dung, bạn có thể chỉ định kiểu dữ liệu của thư mà bạn muốn đưa vào. Máy chủ Node HTTP sử dụng tiêu đề này để diễn giải và xử lý dữ liệu trong nội dung thư POST. Ví dụ: để gửi JSON đến Nút. js, bạn cần chỉ định loại dữ liệu trong phần thân với sự trợ giúp của Loại nội dung. tiêu đề ứng dụng/json. Ví dụ- //curl post body curl -X POST https://reqbin.com/echo/post/json -H "Content-Type: application/json" -d '{"productId": 123456, "quantity": 100}' Output- { "success": "true" } mô-đun HTTPSNút. js cung cấp các mô-đun HTTP và HTTPS trong thư viện chuẩn của nó để thực hiện lệnh gọi API HTTP/HTTPS. Để bắt đầu truyền dữ liệu qua HTTPS, bạn cần bao gồm mô-đun HTTPS. Mô-đun này sẽ tiếp tục tạo máy chủ Node HTTPS sẽ lắng nghe các cổng máy chủ để tạo phản hồi cho máy khách của họ. const https = require(‘https’); Chà, được biết rằng các yêu cầu HTTPS được bảo mật. Vì vậy, sẽ rất hữu ích nếu bạn cũng tạo chứng chỉ SSL (tự ký), đảm bảo liên lạc an toàn. Ở đây, chúng tôi đang bỏ qua phần này Ở đây, chúng tôi đang sử dụng ví dụ cơ bản cho thấy việc sử dụng mô-đun HTTPS để thực hiện lệnh gọi GET. Ví dụ- const https = require('https'); https.get('https://jsonplaceholder.typicode.com/users', res => { let data = []; const headerDate = res.headers && res.headers.date ? res.headers.date : 'no response date'; console.log('Status Code:', res.statusCode); console.log('Date in Response header:', headerDate); res.on('data', chunk => { data.push(chunk); }); res.on('end', () => { console.log('Response ended: '); const users = JSON.parse(Buffer.concat(data).toString()); for(user of users) { console.log(`Got user with id: ${user.id}, name: ${user.name}`); } }); }).on('error', err => { console.log('Error: ', err.message); }); Đầu ra- -> nodejs-requests git:(master) node native-https.js Status Code: 200 Date in Response header: Sun, 10 Jan 2021 22:47:23 GMT Response ended: Got user with id: 1, name: Leanne Graham Got user with id: 2, name: Ervin Howell Got user with id: 3, name: Clementine Bauch Got user with id: 4, name: Patricia Lebsack Got user with id: 5, name: Chelsey Dietrich Got user with id: 6, name: Mrs. Dennis Schulist Got user with id: 7, name: Kurtis Weissnat Got user with id: 8, name: Nicholas Runolfsdottir V Got user with id: 9, name: Glenna Reichert Got user with id: 10, name: Clementina DuBuque -> nodejs-requests git:(master) Chúng ta sẽ từng bước xem điều gì xảy ra trong đoạn mã trên. Lúc đầu, chúng tôi đã nhập mô-đun HTTPS bằng chức năng được yêu cầu. Bạn sẽ nhận được mô-đun này khi cài đặt Node. js, vì vậy không cần tạo bất kỳ tệp json nào hoặc cài đặt bất kỳ thứ gì để chạy mã này. Sau đó, chúng tôi đã thực hiện cuộc gọi đến URL JSONPlaceholder bằng phương thức get. Phương thức GET có một hàm gọi lại sẽ phản hồi biến res Sau đó, chúng tôi khởi tạo dữ liệu dưới dạng một mảng trống rồi sử dụng nhật ký để hiển thị mã trạng thái và ngày từ tiêu đề của phản hồi. Sau khi nhận được câu trả lời, dữ liệu sẽ được lưu trữ trong mảng dữ liệu Sau đó, chúng tôi đã sử dụng hàm concat để nối dữ liệu mảng và thay đổi nó thành một chuỗi. Sau đó, chúng tôi đã phân tích cú pháp JSON để lấy tên người dùng và ID của 10 người dùng Mô-đun AxiosAxios là một Node dựa trên lời hứa, JavaScript phổ biến khác. thư viện js. Bạn có thể sử dụng mô-đun này trên tất cả các trình duyệt hiện đại và hỗ trợ tuyệt vời của nó cho IE8 trở lên. Nó cũng được sử dụng để thực hiện các yêu cầu HTTP có thể hoạt động trơn tru trong cả Trình duyệt và Nút. nền tảng js. Sử dụng Axios có thể thuận lợi hơn so với Fetch API gốc
Để sử dụng mô-đun Axios trong mã của bạn, bạn cần cài đặt nó bằng lệnh sau từ thiết bị đầu cuối cài đặt npm --save axios Trong ví dụ được đề cập bên dưới, chúng tôi gọi API JSON của người dùng bằng Axios const axios = require('axios'); //Axios get body axios.get('https://jsonplaceholder.typicode.com/users') .then(res => { const headerDate = res.headers && res.headers.date ? res.headers.date : 'no response date'; console.log('Status Code:', res.status); console.log('Date in Response header:', headerDate); const users = res.data; for(user of users) { console.log(`Got user with id: ${user.id}, name: ${user.name}`); } }) .catch(err => { console.log('Error: ', err.message); }); Do tính chất dựa trên lời hứa, nó sẽ yêu cầu mã ít rõ ràng hơn. Ngoài ra, bạn có thể biến mã này thành định dạng async/await bất cứ khi nào cần. Để sử dụng phần thân của axios, bạn cần nhập nó bằng chức năng được yêu cầu. Sau đó, chúng tôi đã sử dụng các axios. get (phương thức dựa trên lời hứa) để gọi API người dùng JSONPlaceholder Sau đó, với sự trợ giúp của phương thức “then”, chúng ta đã nhận được dữ liệu được yêu cầu và đã sử dụng biến res để lấy đối tượng phản hồi. Sau đó, sử dụng chức năng nhật ký, chúng tôi đã hiển thị mã trạng thái và ngày từ tiêu đề phản hồi Dữ liệu JSON sẽ được nhận dưới dạng một mảng có độ phân giải. dữ liệu do tính năng chuyển đổi tự động. Ngoài ra, chúng tôi chạy vòng lặp thông qua người dùng để lấy ID và tên của họ. Ví dụ trên dành cho Axios get. Bây giờ, chúng ta sẽ xem ví dụ cho bài đăng Axios. Với Axios, bạn có thể thực hiện các yêu cầu đăng bằng cách sử dụng dữ liệu “đăng” đến một điểm cuối nhất định sẽ kích hoạt các sự kiện mong muốn. Để thực hiện yêu cầu HTTP POST trong Axios, bạn phải gọi axios. bưu kiện(). Trong khi bạn thực hiện yêu cầu POST, bạn cần sử dụng hai tham số. URI của điểm cuối dịch vụ và một đối tượng chứa các thuộc tính mà bạn muốn gửi đến máy chủ Node HTTP Ví dụ- // Axios post body–POST request axios({ method: 'post', url: '/login', data: { firstName: 'Finn', lastName: 'Williams' } }); có mô-đunNút. js cung cấp một âm thanh khác và thư viện yêu cầu HTTP thường được sử dụng, Got. Nó được giới thiệu như một giải pháp thay thế nhẹ cho mô-đun Yêu cầu đã đề cập ở trên (hiện không được dùng nữa). Theo mặc định, GOT sẽ không phân tích cú pháp JSON. Đây là lý do tại sao chúng tôi đã thêm {json. true} làm đối số trong mã bên dưới để bao gồm phân tích cú pháp JSON Giống như Axios, GOT cũng là một API dựa trên lời hứa, khiến nó trở nên phổ biến hơn trong Node. nhà phát triển js Để sử dụng mô-đun Got, bạn cần nhập nó bằng chức năng được yêu cầu bên dưới npm install --save got In the below example, we have used the Got module to get the users from the mock API. const got = require('got'); got.get('https://jsonplaceholder.typicode.com/users', {responseType: 'json'}) .then(res => { const headerDate = res.headers && res.headers.date ? res.headers.date : 'no response date'; console.log('Status Code:', res.statusCode); console.log('Date in Response header:', headerDate); const users = res.body; for(user of users) { console.log(`Got user with id: ${user.id}, name: ${user.name}`); } }) .catch(err => { console.log('Error: ', err.message); }); Nếu bạn xem xét kỹ một ví dụ, bạn sẽ thấy rằng đoạn mã trên tương tự như mã Axios nhưng có sự khác biệt được đề cập bên dưới
Kiểm tra nút của KnowldgeHut. các khóa học js để biết thêm Mô-đun siêu đại lýSuperAgent là một trong những mô-đun lâu đời nhất và phổ biến nhất của Node. js được VisionMedia giới thiệu vào năm 2011. SuperAgent nổi tiếng là thư viện yêu cầu HTTP phía máy khách tiến bộ. Bạn có thể sử dụng mô-đun này để hỗ trợ các tính năng máy khách HTTP cấp cao. Bạn có thể sử dụng nó cho cả API gọi lại và API dựa trên lời hứa. Mô-đun này có nhiều plugin có thể trợ giúp các tác vụ như không có bộ đệm, thời gian HTTP, v.v. Sử dụng mô-đun SuperAgent, bạn cần nhập nó bằng lệnh sau Trong ví dụ sau, chúng tôi sẽ sử dụng async/await để thực hiện lệnh gọi API const superagent = require('superagent'); (async () => { try { const res = await superagent.get('https://jsonplaceholder.typicode.com/users'); const headerDate = res.headers && res.headers.date ? res.headers.date : 'no response date'; console.log('Status Code:', res.statusCode); console.log('Date in Response header:', headerDate); const users = res.body; for(user of users) { console.log(`Got user with id: ${user.id}, name: ${user.name}`); } } catch (err) { console.log(err.message); //can be console.error } })(); Hãy xem những gì đang xảy ra trong ví dụ trên. Đầu tiên, chúng tôi đã sử dụng thư viện superagent bằng chức năng được yêu cầu. Sau đó, chúng tôi đã sử dụng IIFE với async khi chúng tôi sử dụng sự chờ đợi Tiếp theo, chúng tôi đã thêm khối thử và gọi siêu tác nhân. get với await, với mục đích là giải quyết lời hứa và tạo phản hồi cho các cuộc gọi HTTP. Sau đó sử dụng biến res, chúng ta có ngày từ res. tiêu đề. Sử dụng chức năng nhật ký, chúng tôi hiển thị trạng thái và ngày trên bảng điều khiển Sau đó, chúng tôi đã sử dụng hằng số "người dùng" để lưu trữ phản hồi đã tạo và lặp qua mảng 10 người dùng đó để lấy tên người dùng và ID của họ. Sau đó, khối bắt sau sẽ kiểm tra mọi lỗi xảy ra và quản lý chúng bằng cách hiển thị thông báo lỗi trên bảng điều khiển Bạn có thể nói rằng mô-đun SuperAgent đáng tin cậy vì nó được kiểm tra kỹ lưỡng bằng SuperTest (Node. thư viện js). tìm nạp nútNode-fetch là một thư viện yêu cầu HTTP khác dành cho Node. js. Do tìm nạp nút, bạn không phải triển khai XMLHttpRequest trong Nút. js để chạy Fetch polyfill dành riêng cho trình duyệt. Bạn có thể coi nút. tìm nạp dưới dạng mã tối thiểu cho cửa sổ. tìm nạp API tương thích trên Node. thời gian chạy js. Để sử dụng nút. tìm nạp mã của bạn, bạn cần nhập mã bằng mã sau //curl post body curl -X POST https://reqbin.com/echo/post/json -H "Content-Type: application/json" -d '{"productId": 123456, "quantity": 100}' Output- { "success": "true" }0 Hãy xem đoạn mã trên khác với mã với SuperAgent bằng cách sử dụng lệnh chờ/async như thế nào
Yêu cầu xóa HTTPBạn có thể sử dụng phần thân xóa HTTP để xóa các tài nguyên cụ thể. Dưới đây là ví dụ về nút thân yêu cầu xóa http sẽ xóa các lệnh gọi API yêu cầu. Hãy xem quá trình hoàn chỉnh
Sự kết luậnChúng tôi đã sử dụng các ví dụ cơ bản để giải thích khái niệm. Nhưng đây không phải là tất cả, vì nó có phạm vi rộng lớn và không kết thúc ở đây. Với bài viết này, bạn sẽ hiểu cách bạn có thể thực hiện yêu cầu HTTP khác đi. Nút. js có một thư viện toàn diện với các chức năng và mô-đun khác nhau để giúp mọi bước và quy trình của bạn dễ tiếp cận hơn. Vì vậy, nếu bạn đã xem qua bài viết này, bạn phải hiểu mọi phương pháp hơi khác so với phương pháp khác như thế nào. Vì vậy, có thể không khó để hòa đồng ngay cả đối với người mới bắt đầu Câu hỏi thường gặp (FAQ)Q. Nội dung yêu cầu trong Node là gì. js?Request Body lưu trữ thông tin bổ sung mà bạn muốn gửi đến máy chủ. Thân bài rất cần thiết vì nó chỉ rõ nội dung muốn truyền tải. Bạn có thể sử dụng nội dung yêu cầu để lưu trữ thông tin hữu ích, chẳng hạn như tên người dùng và mật khẩu của một người đang cố đăng nhập vào hệ thống của chúng tôi Q. Các yêu cầu HTTP hoạt động như thế nào trong Node. js?Dưới đây là quá trình- Đầu tiên, máy khách thiết lập kết nối thông qua yêu cầu GET. Đổi lại, máy chủ phản hồi bằng mã trạng thái. Nếu mã trạng thái là 200, máy chủ đã sẵn sàng cho kết nối, được gọi là Phản hồi HTTP Sau đó, khách hàng gửi yêu cầu (POST) bao gồm thông tin đăng nhập. Máy chủ xử lý thông tin sau khi đối chiếu với cơ sở dữ liệu. Nếu máy chủ phù hợp với tìm thấy, nó sẽ ủy quyền cho nó và gửi phản hồi lại cho máy khách. Yêu cầu HTTP trong Nodejs là gì?mô-đun http
. Tiếp theo, chúng tôi sử dụng http. yêu cầu gửi dữ liệu đến máy chủ và chờ phản hồi . Phản hồi được lưu trữ trong biến req và khi có lỗi, nó sẽ được đăng nhập vào bảng điều khiển.
Chúng tôi có thể sử dụng tìm nạp trong Nodejs không?Hỗ trợ Fetch() hiện đã có trong Node. js dưới dạng tính năng cốt lõi thử nghiệm . Fetch() là API máy khách HTTP đa nền tảng được yêu thích, hoạt động trong trình duyệt và Web/Service Worker.
Yêu cầu HTTP GET được thực hiện trong nút JS như thế nào?Nó được gọi bằng cách tạo một đối tượng tùy chọn như. tùy chọn const = {máy chủ. 'ở đâu đó. com', cổng. 443, con đường. '/ some/path', phương thức. 'NHẬN', tiêu đề. { 'Loại nội dung'. 'ứng dụng/json' } };
Axios có tốt hơn tìm nạp không?Axios cho phép hủy yêu cầu và hết thời gian yêu cầu. Không tìm nạp . Axios có khả năng chặn các yêu cầu HTTP. Tìm nạp, theo mặc định, không cung cấp cách chặn yêu cầu. |