request(http.IncomingMessage)和response(http.ServerResponse)對象介紹
request:服務器解析用戶提交的http請求報文,將結果解析到request對象中,凡是要獲取和用戶請求的數據都可以通過request對象獲取
request對象常用類型,繼承自stream.Readable
request.headers請求報文頭
request.rawHeaders原生請求報文頭
request.httpVersion請求版本號
request.method請求方法
request.url請求路徑
response:在服務器端用來向用戶做出響應的對象,凡是需要向用戶(客戶端)響應操作,都需要通過response對象來進行
response.writeHead(statusCode[, statusMessage][, headers])
response.setHeader
response.statusCode
responsestatusMessage
response.write
1.request
var http=require('http'); http.createServer(function(req,res){ //1.獲取所有請求報文頭 //req.headers返回的是一個對象,里面返回了所有的請求報文頭 console.log(req.headers); res.end('over'); }).listen(9090,function(){ console.log('http://localhost:9090'); })
var http=require('http'); http.createServer(function(req,res){
//request.rawHeaders返回的是一個數組,數組里保存的都是請求報文頭的字符串
console.log(req.rawHeaders);
res.end('over'); }).listen(9090,function(){ console.log('http://localhost:9090'); })
var http=require('http'); http.createServer(function(req,res){ //2.httpVersion //獲取請求的客戶端所使用的http版本 console.log(req.httpVersion); res.end('over'); }).listen(9090,function(){ console.log('http://localhost:9090'); })
var http=require('http'); http.createServer(function(req,res){ //3.method //獲取客戶端請求使用的方法(POST,GET......) console.log(req.method); //4.url //獲取請求的路徑(不包含主機名,端口號,協議) console.log(req.url); res.end('over'); }).listen(9090,function(){ console.log('http://localhost:9090'); })
2.response
var http=require('http'); http.createServer(function(req,res){ //1.response.write(chunk[, encoding][, callback]) //chunk可以是一個字符串或者一個buffer,第二個參數指定如何將它編寫出一個字節流,默認utf-8,當數據塊被刷新的時候,callback會調用 res.write('hello world! 你好世界'); res.write('hello world! 你好世界'); //每個請求都必須調用res.end //結束請求,該方法通知服務器,所有請求頭和響應主體都以發送,服務器將視為已完成,可以考慮本次響應結束。 //res.end()要響應數據的話,數據必須是String或者Buffer類型 res.end('over'); }).listen(9090,function(){ console.log('http://localhost:9090'); })
但這樣會出現亂碼,所以需要加請求報文頭
//2.通過res.setHeader來設置響應報文頭,不過如果我們不設置響應報文頭,系統也會默認有響應報文頭,並且默認已經發送給了瀏覽器 res.setHeader('Content-Type','text/plain;charset=utf-8');
//3.設置http響應狀態碼 //res.statusCode設置http響應狀態碼 //res.statusMessage設置http響應狀態碼對應的消息 res.statusCode=404; res.statusMessage='NOT FOUND';
這個是響應狀態碼,我們需要不同的響應狀態碼來反饋給用戶信息,哪怕已經找到頁面
//4. res.writeHead() //直接向客戶端響應(寫入)http響應報文頭 //建議在res.write()和res.end()之前調用 //如果res.statusCode,res.statusMessage,res.setHeader和res.writeHead一起設置,但是內容不一樣,服務器會響應res.writeHead res.writeHead(404,'not found',{ 'Content-Type':'text/plain;charset=utf-8' })