Node.js学习笔记(六)#Http模块

目录

一、http模块简介

二、创建一个简单的web服务器实例

1.导入http模块

2.调用http.createServer()方法,创建web服务器实例

3.绑定request事件,监听客户端的网络请求

4.调用.listen()方法,定义端口,启动服务器

三、req和res

1.req

① req.setHeader(name, value)

② req.setTimeout(timeout[, callback])

③ const { key } = req

2.res

① res.setHeader(name, value)

② response.writeHead(statusCode[, statusMessage][, headers])

③ res.setTimeout(msecs[, callback])

3.根据不同的接口返回不同的内容


一、http模块简介

http模块是node.js内置的模块,支持node.js创建web服务器

为了支持所有可能的HTTP应用程序,Node.js的http模块只做初级的操作,只涉及到流处理和消息解析。它将消息解析为请求头和请求体,但不解析实际的请求头或请求体。

二、创建一个简单的web服务器实例

1.导入http模块

const http = require('http')

2.调用http.createServer()方法,创建web服务器实例

const server = http.createServer()

3.绑定request事件,监听客户端的网络请求

server.on('request',(req,res)=>{
    res.write('Hello Nodejs!')
    res.end()
})

4.调用.listen()方法,定义端口,启动服务器

server.listen(8080,()=>{
    console.log('server running at http://127.0.0.1:8080')
})

三、req和res

1.req

req是请求对象,可以获取客户端相关数据或属性

① req.setHeader(name, value)

作用:设置请求头

req.setHeader('Content-Type', 'application/json');

② req.setTimeout(timeout[, callback])

作用:设置请求超时,单位为毫秒

req.setTimeout(3000, () => { 
    console.log("timeout") 
    process.exit(0) //结束进程
}) 

③ const { key } = req

作用:获取req的属性

const {url} = req

2.res

res是响应对象,可以返回服务端相关数据或属性

① res.setHeader(name, value)

作用:为一个隐式的响应头设置值

res.setHeader('Content-Type', 'text/html');

② response.writeHead(statusCode[, statusMessage][, headers])

作用:发送一个响应头给请求,包括(状态码,[状态描述],[响应头])

注意:res.setHeader()设置的响应头会与 res.writeHead() 设置的响应头合并,且 res.writeHead() 的优先

res.writeHead(200, { 'Content-Type': 'text/plain' });

③ res.setTimeout(msecs[, callback])

作用:设置 socket 的超时时间

res.setTimeout(50000, () => { 
    console.log("timeout") 
}) 

3.根据不同的接口返回不同的内容

const http = require('http') // 导入http模块
const server = http.createServer() // 创建web服务器实例
server.on('request',(req,res)=>{ // 监听客户端的网络请求
    const {url} = req // 获取url
    res.writeHead(chooseStatus(url),{"Content-Type":"text/html;charset=utf-8"}) // 设置响应头
    res.write(chooseUrl(url)) // 根据不同接口地址显示不同内容
    res.end()
})
server.listen(8081,()=>{ // 调用.listen()方法,启动服务器
    console.log('server running at http://127.0.0.1:8081')
})
function chooseUrl(url){ // 动态返回内容
    switch(url){
        case '/favicon.ico':
            return
        case '/api/getHeight':
            return '180'
        case '/api/getPerson':
            return 'zhangsan'
        default:
            return '500'
    }
}
function chooseStatus(url){ // 动态返回状态码
    let arr=['/api/getHeight','/api/getPerson']
    return arr.includes(url)?200:500
}

猜你喜欢

转载自blog.csdn.net/weixin_42214717/article/details/128182049