我有一個非常簡單的網路服務器:
const ws = require('http');
ws.createServer(
function(req,res)
{
console.log('request received');
res.write('Hello world');
res.end();
})
.listen(1234);
服務器作業。當我在 localhost:1234 上打開瀏覽器時,我收到 Hello World 文本。當我從 REST 客戶端向 localhost:1234 發送 GET 時,我得到:
HTTP/1.1 200 OK
Date: Fri, 03 Dec 2021 20:10:12 GMT
Connection: close
Transfer-Encoding: chunked
Hello world
現在,我想撰寫一個測驗,但找不到任何方法從回應中提取“Hello world”文本。目前,我的測驗代碼如下所示:
const http = require('http');
let req = http.get('http://localhost:1234',(res)=>{
let txt = res.read();
console.log(txt);
});
這總是回傳空值。
我也試過:
const http = require('http');
let req = http.get('http://localhost:1234',(res)=>{
let data = [];
res.on('data',(chunk)=>data.push(chunk));
console.log(data);
});
這將回傳一個空陣列。
當我除錯并查看 res 物件時,很容易在回應中找到除 Hello World 文本之外的所有內容(主要在 res.headers 中)。我已經看到很多示例來提取以 JSON 格式等發送的資料,但我想從最簡單的示例(純文本)開始,似乎找不到任何方法來執行此操作。當我通過 HTTP 模塊發送 GET 時,瀏覽器可以回傳的任何內容似乎都應該可用,但我找不到它。
uj5u.com熱心網友回復:
您可以通過以下方式將回應讀取為 json:
服務器檔案:
const ws = require('http');
ws.createServer(
(request, response) => {
console.log('request received');
response.write('{"body": "Hello World !"}');
response.end();
}
).listen(1234);
請求檔案:
const http = require('http');
http.get('http://localhost:1234', (response) => {
response.on("data", (chunk) => {
body = JSON.parse(chunk).body
console.log(body); // return 'Hello World !' as text
})
}).on('error', function(e) {
console.log("Error message : " e.message);
});
uj5u.com熱心網友回復:
我設法弄明白了。好吧。我發現了一些有用的東西,但仍然沒有完全理解它的機制。
以下作品和日志
你好,世界
到控制臺。
const http = require('http');
let req = http.get('http://localhost:1234',async (res)=>{
res.on('readable', () => {
let txt=res.read().toString();
console.log(txt);
});
});
似乎您需要偵聽可讀事件才能從 read() 中獲取任何內容,并且當您這樣做時,確實會帶回 Hello world 文本(盡管作為 Buffer 陣列,因此需要 ToString() )。
同樣,以下內容也適用于 'data' 事件:
const http = require('http');
let req = http.get('http://localhost:1234',(res)=>{
let txt = '';
res.on('data',(chunk)=>{
txt =chunk.toString();
console.log(txt);
});
});
我有一些后續問題,但如果我不明白,我會做更多的研究并在新問題中再次提問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/374240.html
標籤:javascript 节点.js http 网络服务器
