03http

四大类

http 模块拥有四大类, 分别是 http.Server, http.ClientRequest, http.IncomingMessage, http.ServerResponse
这里只对简单的基础知识总结

一个简单的例子中就包含这四大类的实例

const http = require('http')

const server = http.createServer((req, res) => {
    res.writeHead(200, 'ok', {
        'Content-Type': 'text/plain'
    })
    res.end('hello node')
}).listen(3000)
const client = http.get('http://127.0.0.1:3000', function(clientRes) {
    console.log(clientRes)
})

例子解释

server 就是 http.Server 的实例, 创建了服务端,接受客户端发送来的所有请求

client 就是 http.ClientRequest 的实例, 向服务端发送请求

server 中的 res 就是 http.ServerResponse 的实例, 用来设置返回请求的响应内容

比较特殊的就是 http.IncomingMessage 的实例了, 有两个 , 一个是 server 中的 req, 一个是 client 中的 clientRes

server 中的这个req 可以得到请求中的信息

client 中的这个clientRes 可以得到 响应中的信息

http.IncomingMessage 类

这个类的实例, 在server 和 在 client 中有一些细微的差异

在server处 : 特有 属性 url

在client处 : 特有属性 statusCode 和 statusMessage

其他的都有的属性和方法有

属性: headers, httpVersion, rawHeaders, socket

方法: .destory() .setTimeout()

例子1 , 在服务端,获取基本信息

const http = require('http')

http.createServet((req, res) => {
    console.log(req.url)
    console.log(req.method)
    console.log(req.headers)
    console.log(req.httpVersion)
    res.end('ok')
}).listen(3000)

例子2, 在服务端获取get请求参数

var http = require('http');
var url = require('url');
var querystring = require('querystring');

var server = http.createServer(function(req, res){
    var urlObj = url.parse(req.url);
    var query = urlObj.query;
    var queryObj = querystring.parse(query);
    
    console.log( JSON.stringify(queryObj) );

    res.end('ok');
});

server.listen(3000);

例子3 在客户端

const client = http.get('http://abc.com:80/',function(res) {
    console.log(res.statusCode)
    console.log(res.statusMessage)
})

http.ServerResponse 类

设置 状态码 和 描述信息

res.writeHead(200, 'ok')
或者
res.statusCode(200)
res.statusMessage('ok')

设置响应头

const http = require('http')

http.createServer((req,res) => {
    res.setHeader('Content-Type': 'text/html')
    res.writeHead(200, 'ok', {
        'Content-Type': 'text/plain'
    })
    res.end('hello')
}).listen(3000)

// res.setHeader() 和 res.writeHead() 都能够设置请求头, res.writeHead()可以覆盖res.setHeader()

// 响应头的其他操作
// 增
res.setHeader('Conent-Type', 'text/html')
// 删
res.removeHeader('Content-Type')
// 改
res.setHeader('Content-Type', 'text/html')
res.setHeader('Content-Type', 'text/plain')
// 查
res.getHeader('congent-type')

设置响应体

res.write(chunk, [encoding], [callBack])
res.end()
//两个都可以

猜你喜欢

转载自www.cnblogs.com/ADong4031/p/12336109.html