首頁 >web前端 >js教程 >在node.js中提出http請求

在node.js中提出http請求

Joseph Gordon-Levitt
Joseph Gordon-Levitt原創
2025-02-24 10:15:12686瀏覽

Making HTTP Requests in Node.js

在node.js中提出http請求

在以前的文章中,我專注於創建一個node.js服務器來處理HTTP請求。本文通過向您展示如何從node.js應用程序中向您展示HTTP請求,以反面查看問題。您可能會問自己為什麼要這樣做。立即想到了兩個應用程序 - 網絡刮擦和代理。刮板是軟件的部分,可下載網頁並從編程中從中提取信息。代理服務器充當中介,將客戶端請求轉發給其他服務器並返迴響應。


鑰匙要點

Node.js中的請求模塊是一種簡單且靈活的工具,用於製作HTTP請求,包括GET,發布,PUT和DELETE。它是與Restful API進行交互的理想選擇,可用於諸如Web刮擦和代理等任務。
    >
  • 可以將請求模塊進行參數化以修改HTTP請求,從而配置諸如URI,方法,超時和重定向處理之類的參數。它還支持使用發布請求提交表單數據的提交,並可以處理以跟踪用戶交互的cookie。
  • >雖然請求模塊功能強大且通用,但建議參考其文檔,以全面了解其功能。該模塊還可以與其他模塊(例如文件系統模塊)結合使用,以進行更複雜的任務,例如流向文件和從文件中的http請求。
  • 請求模塊
在Node.js中創建HTTP請求的最簡單方法是使用請求模塊。由Mikeal Rogers撰寫的請求允許您提出所有類型的HTTP請求,包括GET,發布,PUT和DELETE。它的靈活性使請求模塊非常適合與RESTFUL API進行交互。您可以使用以下npm命令安裝請求。

>

>安裝請求後,創建一個新的node.js文件,其中包含下面顯示的代碼。該示例的第一行用於將請求導入程序。製作HTTP請求與調用請求()函數一樣簡單。在此示例中,我們正在要求下載JSPRO主頁。請求()的第二個參數當然是回調函數。

>
npm install request

request()回調函數採用三個參數 - 錯誤,響應和身體。顧名思義,錯誤包含有關HTTP請求期間發生的任何問題的信息。響應參數是一個對象,其中包含從呼叫返回的各種數據,包括狀態代碼,標題等。第三個回調論點,正文是響應的主體。在上一個示例中,主體包含JSPRO主頁的源代碼。 >

>也可以將請求模塊與文件系統模塊結合使用,以將HTTP請求傳輸到文件和從文件中。下面的示例再次獲取JSPRO。但是,它沒有在控制台中顯示源代碼,而是寫入名為“ jspro.htm”的文件。

npm install request
參數化請求

以前的示例創建了對URL的簡單獲取請求。但是,我們可以通過將配置對像作為第一個參數傳遞到請求()來修改HTTP請求。以下示例使用更強大的語法再次下載JSPRO。注意眾多配置參數。 URI和方法參數告訴請求將Get請求發送到JSPRO。

超時參數告訴請求在放棄之前等待10,000毫秒(十秒)進行響應。最後兩個參數涉及以下重定向。在沒有用戶知識的情況下,許多頁面在幕後進行重定向。 lasterRedirect和maxrectect參數指示請求請求最多跟進十個3
<span>var request = require("request");
</span><span>request("http://www.sitepoint.com", function(error<span>, response, body</span>) {
</span>  <span>console.log(body);
</span><span>});</span>
xx

http redirects。另外,請注意,請求()支持此處未顯示的許多其他參數。 > >提交表單數據

>如前所述,請求不僅支持請求。一個非常普遍的操作是使用POST請求提交表單數據。以下示例使用請求()的表單參數作為帖子的一部分發送用戶名。然後,PHP頁面通過用名稱向用戶打招呼。

與cookie
<span>var request = require("request");
</span><span>var fs = require("fs");
</span><span>request("http://www.sitepoint.com").pipe(fs.createWriteStream("jspro.htm"));</span>
打交道

許多站點使用cookie跟踪各種用戶交互。 cookie是每次HTTP事務的客戶端和服務器之間來回傳遞的小數據。為了促進cookie的使用,請求提供jar()和cookie()方法。使用cookie()方法創建單個cookie。在以下示例的第3行中,創建了一個指定用戶名稱的cookie。然後將cookie添加到第2行中創建的cookie jar。發出HTTP請求後,使用JAR參數將cookie Jar發送到服務器。 >

接收到響應時,將向用戶打招呼,以約翰(存儲在cookie中)的名字。 cookie jar還可以通過服務器進行的任何更改進行更新。如果您在請求之前和之後打印出cookie jar,您會發現服務器將cookie的值從“ John”更改為“陌生人”。相同的cookie jar可以傳遞給連續的http請求,以模仿真實用戶與站點的交互。
<span>var request = require("request");
</span><span>request({
</span>  <span>uri: "http://www.sitepoint.com",
</span>  <span>method: "GET",
</span>  <span>timeout: 10000,
</span>  <span>followRedirect: true,
</span>  <span>maxRedirects: 10
</span><span>}, function(error<span>, response, body</span>) {
</span>  <span>console.log(body);
</span><span>});</span>

結論

>本文介紹了簡單但功能強大的請求模塊。由於本文並不全面,我建議至少瀏覽文檔,以查看其他請求可以做什麼。請繼續關注即將發表的文章,該文章將使用請求更深入地涵蓋網絡刮擦。

>

,如果您喜歡閱讀這篇文章,您會喜歡學習的;從大師那裡學習新鮮技能和技術的地方。成員可以立即訪問SitePoint的所有電子書和交互式在線課程,例如Jump Start start JavaScript。 >對本文的評論已關閉。有關於JavaScript的疑問嗎?為什麼不在我們的論壇上詢問
> 在Node.js 中提出HTTP請求時>常見問題解答

>

>如何在node.js中提出http請求?

>您可以使用內置的HTTP或HTTPS模塊在Node.js中提出HTTP請求,以用於低級控件,也可以使用Axios,Node-fetch或請求模塊,用於簡化且更高的第三方庫-Level HTTP請求。

>使用第三方庫(如Axios或Node-fetch)的優點是什麼node.js中的http請求?

>第三方庫提供更多用戶友好的API,基於承諾或異步/等待支持的支持,並提供了諸如請求/響應處理和自動json解析之類的功能,使它們成為開發人員的流行選擇。

node.js中的get和post請求有什麼區別?

get請求用於從服務器檢索數據,而郵政請求用於將數據發送到服務器進行處理或存儲,通常以表單或API請求使用。

>

>我可以做在node.js中使用內置的HTTP模塊獲取和發布請求?

是的,您可以使用http或https模塊進行獲取和發布請求,但是它需要更多的低級代碼來進行請求配置和響應處理。

>

>

請求使用Node.js中的HTTP模塊?

>您可以使用http.get()方法製作獲取請求,傳遞URL和回調函數來處理響應數據。

>同步和異步HTTP之間有什麼區別node.js中的請求?

>同步請求阻止事件循環直到請求完成,而異步請求允許您的應用程序在等待響應時繼續處理其他任務。

>

>我在製作http請求時如何處理錯誤在node.js中?

>您可以通過使用try/catch塊來同步請求處理錯誤,並在回調中添加錯誤處理或使用異步請求的承諾。

>

>我可以在使用HTTP庫中進行認證的請求node.js? 是的,您可以在使用第三方庫(例如Axios或node-fetch)時在請求標題中包含身份驗證令牌或憑據。許多API都需要身份驗證以訪問。 >是否可以使用node.js將文件上傳到http請求中? 是的,您可以通過將post請求與Multipart/form-data內容類型發送。諸如AXIOS和請求模塊之類的庫提供了處理文件上傳的選項。

>如何在node.js中進行並發或併行HTTP請求?

為了同時提出多個HTTP請求,您可以使用Promisises或Async/等待等異步功能,也可以使用支持並行請求處理的庫。

>

以上是在node.js中提出http請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn