HTTP協議javascript
包含請求報文,響應報文css
let msg = "<h1>hello world</h1>"; //構造響應報文 let responseText = "HTTP/1.1 200 OK\r\n"; responseText += "Server: mynodeserver 1.0\r\n"; responseText += "Content-Length:"+ msg.length +"\r\n"; responseText += "Content-Type: text/html;charset=utf-8\r\n"; responseText += "\r\n"; responseText += msg; socket.write(responseText); socket.end();
"use strict"; const http = require("http"); let server = http.createServer((req,res)=>{ //獲取請求頭 req.headers //獲取http的版本 req.httpVersion //請求的方法 req.method //請求的路徑 req.url console.log(req.headers); console.log(req.httpVersion); console.log(req.method); console.log(req.url); res.write("hhhhhh中文"); res.end(); }).listen(8888,()=>{ console.log("開始監聽..."); });
請求對象的經常使用屬性html
響應對象的經常使用方法java
請求會有不少不少,若是一個請求出錯會致使服務器掛掉,別的請求沒法訪問服務器. 因此再作服務器開發的時候要保證若是一個請求出錯,不影響其餘請求 如何處理異常: try{ }catch(err){ console.log("出錯了:" + err); //此處要寫日誌,讓程序員發現錯誤,進行修改 }
const http = require("http"); const fs= require("fs"); const path = require("path"); let server = http.createServer((req,res)=>{ if(req.url.trim() === "/" || req.url.includes("index.html")) { //讀取模板html文件 fs.readFile("./template/tmp.html", (err, content)=>{ let tmp = content.toString(); let dataArr = require("./data.json"); //變量數據,替換模板 let array = []; for (var i = 0; i < dataArr.length; i++) { let item = dataArr[i]; array.push("<li>"+item+"</li>"); } tmp = tmp.replace("${list}",array.join("")); tmp = tmp.replace("${title}","列表"); res.write(tmp); //結束請求 res.end(); }); }else if(req.url.includes(".css")){ //加載css fs.readFile(path.join("template",req.url) ,(err,content)=>{ res.setHeader("Content-Type","text/css;charset=utf8"); res.end(content); }); }else if(req.url.includes(".jpg")) { //加載jpg的圖片 fs.readFile(path.join("image",req.url) ,(err,content)=>{ res.setHeader("Content-Type","image/jpeg"); res.end(content); }); }else{ res.end("你鬧啥呢"); } }).listen(8888,()=>{ console.log("開啓監聽..."); });