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
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值