導航:首頁 > 編程語言 > nodejs接受post數據類型

nodejs接受post數據類型

發布時間:2025-06-14 02:47:55

1. Nodejs中怎麼獲取HTML中一個form下的所有POST數據

首先獲取http,並創建一個web服務,監聽本地埠1337,這個可以修改,任何未被佔用的埠都可以用,並堅挺data事件和end事件,整個文件保存為app.js


下面這里貼上測試代碼

////////////////app.js///////

var http = require('http');

var server = http.createServer(function(req,res){

if(req.url!=="/favicon.ico"){

req.on('data',function(data){

console.log("伺服器接收到的數據:"+decodeURIComponent(data));

});

req.on("end",function(){

console.log('客戶端請求數據全部接收完畢');

});

}

res.end();

}).listen(1337,"localhost",function(){

console.log("listened");

});

////////////////index.html///////

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Nodejs的data事件與end事件的回調函數測試用頁面</title>

</head>

<body>

<form id= "form1" action = "http://localhost:1337/" method = "post">

姓名:<input type = 'text' name = "name" value ="dragon"><br/>

年齡:<input type = "number" name = "age" value ="25">

<input type = "submit" value =" 提交"/>

</form>

</body>

</html>

2. 如何使用Nodejs進行批量下載

前言

在進行大量數據下載時,Python的性能限制和線程庫問題讓開發者感到困擾。雖然Python是寫爬蟲的利器,但其自帶的HTTP庫是阻塞式的,單線程模型下進程大量時間消耗在等待數據傳輸,這不適合處理下載大量圖片鏈接的場景。為了解決Python的線程問題和提升性能,Node.js成為一個理想選擇。

Node.js基於谷歌的V8引擎,採用事件驅動的單線程非同步非阻塞運行模型。在高性能V8引擎支持下,Node.js能夠實現高並發的web服務,無需Nginx做代理即可達到高業務並發量。這種模型使得Node.js非常適合處理大量並發下載任務。

准備工作

假設你已經通過爬蟲獲取了一堆圖片鏈接。Node.js腳本可以通過接收POST HTTP請求、進程間通信、讀寫文件或資料庫等方式獲取這些鏈接。以某大型角色扮演網路游戲官網上提供的壁紙鏈接為例,我們可以使用Node.js的HTTP請求API來下載這些圖片。

下載流程

定義一個函數`startDownloadTask`,該函數遍歷鏈接列表,依次啟動下載任務。通過調用Node.js的`http.request` API發起下載,由於該API和Node.js的大多數API一樣是非同步非阻塞模式,`startDownloadTask`函數在調用後立即返回,不會等待下載完成。

`http.request` API接受一個options對象來指定請求的目標地址,並在完成請求時執行回調函數。在回調函數中,我們可以處理數據流、響應狀態碼和頭部信息,從而實現圖片的下載和保存。

實現細節

了解`http.request`的使用方法後,我們可以編寫下載過程。`getHttpReqCallback`函數用於創建閉包,將下載路徑和序號作為參數傳遞給回調函數。在回調函數中,我們監聽`data`和`end`事件,分別處理接收到的數據和數據接收完畢的情況,確保數據的正確存儲。

優化與異常處理

為了提高性能,避免頻繁磁碟寫操作,我們將接收到的數據緩存到列表中,待數據完整後一次性寫入磁碟。這樣可以減少磁碟I/O操作,提高效率。

程序異常處理至關重要。在代碼中添加日誌列印、錯誤處理邏輯以及重試機制,確保程序的健壯性。例如,設置超時時間、處理請求和響應異常等。

總結與資源

Node.js在處理大量並發下載任務時表現出色,得益於其獨特的單線程非同步非阻塞運行模型。雖然它在某些方面可能與開發者熟悉的其他語言有所不同,但通過實踐可以發現Node.js的強大與有趣之處。本文提供了一個從零開始到實際應用的完整示例,旨在幫助開發者理解Node.js中的一些特殊性和運行機制。

3. nodejs 中express框架中request有哪些屬性和方法

最近本人在學習開發NodeJs,使用到express框架,對於網上的學習資料甚少,因此本人會經常在開發中做一些總結。

express獲取參數有三種方法:官網介紹如下

Checks route params (req.params), ex: /user/:id
Checks query string params (req.query), ex: ?id=12
Checks urlencoded body params (req.body), ex: id=
1、例如:127.0.0.1:3000/index,這種情況下,我們為了得到index,我們可以通過使用req.params得到,通過這種方法我們就可以很好的處理Node中的路由處理問題,同時利用這點可以非常方便的實現MVC模式;

2、例如:127.0.0.1:3000/index?id=12,這種情況下,這種方式是獲取客戶端get方式傳遞過來的值,通過使用req.query.id就可以獲得,類似於PHP的get方法;

3、例如:127.0.0.1:300/index,然後post了一個id=2的值,這種方式是獲取客戶端post過來的數據,可以通過req.body.id獲取,類似於PHP的post方法;

下面舉例介紹下這三個方法:

如下一個test.html代碼

<form action="/index" method="get">
<input type="text" name="login_name"/>
<input type="submit" value="Sign In" />
</form>
在nodeJs中我們要自定義HTTP,因此創建index.js
var app = require('express').createServer();

app.get('/:key', function(req, res){
console.log(req.params.key);//輸出index
console.log(req.query.login_name);//輸出表單get提交的login_name
res.send('great you are right for get method!');//顯示頁面文字信息
});
app.post('/:key', function(req, res){
<pre name="code" class="javascript"> console.log(req.params.key);//輸出index
console.log(req.body.login_name);//輸出表單post提交的login_name
res.send('great you are right for post method!');//顯示頁面文字信息
});app.listen(3000);

之後運行node index.js就可以看到本效果,當然前提是你要先訪問test.html,至於如何通過express訪問一個html文件我就不詳細描述了,可以參考如下代碼:
global.fs=require('fs');
var realpath = VIEW + "test.html";
var file = fs.readFileSync(realpath);
res.end(file);

4. nodejs post請求和gat請求之間的區別

  1. get是從伺服器上獲取數據,post是向伺服器傳送數據。

2 get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。

3 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的數據。

4 get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

5 get安全性非常低,post安全性較高。

6 HTTP 定義了與伺服器交互的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規范,GET 用於信息獲取,而且應該是 安全的和冪等的。所謂安全的意味著該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當用戶打開一個鏈接時,她可以確信從自身的角度來看沒有改變資源。 比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該通過 POST 請求實現,因為在註解提交之後站點已經不同了

7 在FORM提交的時候,如果不指定Method,則默認為GET請求,Form中提交的數據將會附加在url之後,以?分開與url分開。字母數字字元原 樣發送,但空格轉換為「+「號,其它符號轉換為%XX,其中XX為該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;GET方式提交的數據最多隻能有1024位元組,而POST則沒有此限制

5. js如何將base64格式圖片保存到伺服器

下面一小復段代碼給大制家分享Nodejs把接收圖片base64格式保存為文件存儲到伺服器上的方法,具體代碼如下所示:
app.post('/upload', function(req, res){
//接收前台POST過來的base64
var imgData = req.body.imgData;
//過濾data:URL
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
fs.writeFile("image.png", dataBuffer, function(err) {
if(err){
res.send(err);
}else{
res.send("保存成功!");
}
});
});

6. nodejs內置模塊有哪些

一、Express框架

前面的章節已經介紹過了,可以使用npm來安裝node.js模塊。具體操作請參照以前寫的nodejs概論。

Express是一個nodejs的web開源框架,用於快速的搭建web項目。其主要集成了web的http伺服器的創建、靜態文本管理、伺服器URL地址請求處理、get和post請求處理分發、session處理等功能。

使用方法,在cmd中打開你所想創建web項目的路徑。然後輸入

Express appname

即可創建一個名為appname的web項目。控制台列印結果

在jada文件中是可以使用for循環和if判斷語句的,可以讓你體會類似JSP的<%%>和php的<php></php>在網頁上輸出數據的快感。

三、forever模塊

nodejs作為http伺服器,需要確保服務順利進行,要注意一下兩點:

1.後台服務運行,監控運行日誌,以及http運行日誌;

2.確保項目的正常安全運行,Node.js的啟動命令node,很大程度無法滿足運行需求;

Node.js的forever模塊在第二點就可以起到很大的作用,同時其擁有監控文件更改、自動重啟等功能。

forever模塊的使用方法有兩種:1.在命令行中使用

forever -l forever.log -o out.log -e err.log app.js
-l forever.log -o out.log -e err.log分別指定了forever的運行日誌,腳本流水日誌,腳本運行錯誤日誌,啟動後將在本文件夾下產生out.log、err.log文件。

2.在編碼中require forever模塊使用。

四、Socket.IO模塊

Socket.IO模塊主要功能是將WebSocket協議應用到所有瀏覽配廳器。主要用於實時的長連接多求情項目中。

例如:在線聯網游戲,實時聊天、實時股票查看、二維碼掃描登錄掘粗等。

安裝方法仍然是在cmd在中輸入npm install socket.io

如何使用Socket.IO來創建一個項目。

需要分別實現服務端和客戶端的邏輯:

先創建一個服務端的node.js腳本index_server.js

var app = require('http').createServer(handler)//創建伺服器app
, io = require('socket.io').listen(app)//引用socket.io模塊監聽app
, fs = require('fs')//引用文件處理模塊
app.listen(80);//指定app監聽的埠,第二個參數127.0.0.1可省略

function handler (req, res) {
fs.readFile(__dirname + '/index.html', function (err, data) { if (err) {
res.writeHead(500); return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}

io.sockets.on('connection', function (socket) {
socket.emit('判賣鎮news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});

其中,socket.emit()為Socket發送消息的函數,第一個參數表示發送消息的key值,第二個參數為發送消息的內容,也就是發送的數據。

Socket。on()為Socket接收消息的函數,第一個參數為接收消息的可以值,第二個參數為回調函數,其中回調函數攜帶的參數為接收消息所發送的數據。

接下來web前端如何使用JavaScrit 來連接Socket伺服器。

新建一個index_client.html

<script type="text/javascript" src="socket.js"></script>
<script type="text/javascript"> var socket = io.connect('http://localhost');//創建本地sock連接
socket.on('news',function (data) {//Socket接收news消息時執行回調函數 console.log(data);
socket.emit('my other event',{my:'data'});
});</script>

<script type="text/javascript" src="socket.js"></script>載入已經安裝好的Socket.io的本地JavaScrit文件。
var socket = io.connect('http://localhost');因為埠為80,所有這里可以不埠號
socket.on('news',function (data){}//客戶端接收news消息成功後,發送my other event消息到服務端,發送的消息內容為json對象{my:'data'}

接下來只需要運行服務端的index_server.js文件來啟動socket服務

效果:在瀏覽器輸入http://127.0.0.1按F12調出瀏覽器的控制台console即可看見列印出了一個object對象。

執行完畢後可能會報錯:catnot find mole socket.io,說明你的socket.IO沒有安裝,或已經安裝並配置為全局,但你的安裝路徑並沒有配置到在path中,所有無法引用。
你可以選擇配置path,或者安裝到項目內。這里建議安裝到你的項目目錄下,而不是簡單粗暴的配置為全局。先卸載npm uninstall socket.io 進入指定目錄後安裝node index_server.js

socket.io詳細請參閱 http://cnodejs.org/topic/50a1fcc7637ffa4155b5a264

五、request模塊

request模塊為開發者提供了一種簡單訪問HTTP請求的方法。request還支持HTTPS的訪問方法。

安裝:

npm install requset

request模塊基本上覆蓋了所有的HTTP請求方式如GET,POST,HEAD,DEL等。但其最基本的兩個方法是request.get()和request.post().

get和post的區別

get:

1.使用get向伺服器發出和接收的請求會附在url之後。類似:http://www..com?id=1221&name=5555這個url中傳遞了兩個參數,一個為id,一個為name。

2.get請求不能超過1024個位元組。

post沒有限制,也不會附在url上。

接下來做一個簡單的實例

get實例:

首先新建一個伺服器app_get.js

var http= require("http");
http.createServer(function(req,res){
res.writeHead(200,{'content-Type':'text/plain'});
res.end('Hello world '+req.method);
}).listen(1337,"127.0.0.1");

再建一個發送求情的request_get.js文件

var request=require('request');
request.get("http://127.0.0.1:1337",function(error,response,result){
console.log(result);
});

在CMD中運行app_get.js,運行成功後,再打開一個cmd(之前的cmd不要關閉),執行request_get.js文件。

執行後的結果如下

hello world
GET

可以看出,通過request.get方法訪問

http://127.0.0.1:1337 返回的結果就是res.end()的參數

post實例:
和上面一樣,先新建伺服器app_post.js

var http= require("http"),
querystring=require('querystring');
http.createServer(function(req,res){ var postData=""; //開始非同步接收客戶端post的數據
req.addListener("data",function (postDataChunk) {
postData += postDataChunk;
}); //非同步post數據接收完畢後執行匿名回調函數
req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));
res.writeHead(200,{'content-Type':'text/plain'});
res.end(postStr+' '+req.method);
});
}).listen(1400,"127.0.0.1");

然後再新建一個request_post.js

var request=require("request");
request.post('http://127.0.0.1:1400',{form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})

像上面一樣在cmd中執行後顯示的結果如下:

D: odejssrc equest>node request_post.js
{"name":"ermu","book":"node.js"}
POST

request post提交了一個json對象{"name":"ermu","book":"node.js"}而伺服器接通過獲取該POST數據,然後返回客戶端,同時將http請求方式也響應到客戶端。

request post參數可以有兩種傳遞方式。

其中,第一種是將url和form表單的數據作為json參數在request post傳遞。舉例如下:

request.post('url':'http://127.0.0.1:1400',form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})

另一種是將url和form作為兩個參數,上面的實例就是使用這種方法。

六、 Formidable模塊

該模塊的目的是為了解決文件上傳。

在原生的node.js模塊中,提供了獲取post數據的方法,但是並沒有直接獲取上傳文件。

7. nodejs如何與java交互 java和nodejs交互

品牌型號:聯想GeekPro 2020
系統win10 1909 64位企業版
nodejs與java怎麼交互呢?下面就給大家介紹一下nodejs與java的交互方法。
先貼代碼:
主頁面的html
index.html:
food
other
然後是伺服器端的代碼,運行方式是在node環境下輸入命令:node server.js
server.js:
let http = require(http);
let qs = require(querystring);
let server = http.createServer(function(req, res) {let body = ; // 一定要初始化為 不然是undefined
req.on(data, function(data) {body += data; // 所接受的Json數據
});
req.on(end, function() {res.writeHead(200, { // 響應狀態
Content-Type: text/plain, // 響應數據類型
Access-Control-Allow-Origin: * // 允許任何一個域名訪問
});
if(qs.parse(body).name == food) {res.write(apple);
} else {res.write(other);
}
res.end();
});
});
server.listen(3000);
引入的qs模塊用於解析JSON
req.on(data, callback); // 監聽客戶端的數據,一旦有數據發送過來就執行回調函數
req.on(end, callback); // 數據接收完畢
res // 響應
客戶端的js(功能就是負責一些DOM操作以及發送ajax請求)
client.js:
let btn1 = document.getElementById(btn1);
let btn2 = document.getElementById(btn2);
let content = document.getElementById(content);
btn1.addEventListener(click, function() {ajax(POST, http://127.0.0.1:3000/, name=+this.innerHTML);
});
btn2.addEventListener(click, function() {ajax(POST, http://127.0.0.1:3000/, name=+this.innerHTML);
});
// 封裝的ajax方法
function ajax(method, url, val) { // 方法,路徑,傳送數據
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {if(xhr.readyState == 4) {if(xhr.status = 200 xhr.status 300 || xhr.status == 304) {content.innerHTML = xhr.responseText;
} else {alert(Request was unsuccessful: + xhr.status);
}
}
};
xhr.open(method, url, true);
if(val)
xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded);
xhr.send(val);
}

閱讀全文

與nodejs接受post數據類型相關的資料

熱點內容
文件粉碎速度 瀏覽:679
天貓領券app哪個最好安全 瀏覽:487
永安ps九折型材文件袋 瀏覽:420
gn137文件管理 瀏覽:58
java變數類型判斷 瀏覽:500
沈陽在線編程課哪個比較好 瀏覽:373
系統注冊表文件windows無法載入 瀏覽:699
java中2222222222 瀏覽:583
撥號錯誤代碼720 瀏覽:460
599體育數據模型怎麼看不見了 瀏覽:903
國產資料庫性能 瀏覽:714
什麼樣的app計算路程 瀏覽:501
文件保存桌面被改名 瀏覽:392
richtext代碼怎麼寫 瀏覽:111
檢測不到金稅盤版本號 瀏覽:546
中興zxa10f411升級 瀏覽:839
奇跡加攻加防代碼 瀏覽:194
js導出excel數據格式 瀏覽:352
小米手機怎麼設置支付寶網路 瀏覽:536
安卓系統文件修復器下載 瀏覽:820

友情鏈接