1 创建简单的服务器
首先导入http模块,调用createServer()创建服务器实例,然后监听访问请求,最后调用listen()方法启动服务器,指定端口号和回调函数。只要访问了http://127.0.0.1:8080,服务器端控制台就会打印出someone visit website。
// 手写服务器
const http = require('http')
// 创建web服务器实例
const sever = http.createServer()
// 为web服务器实例绑定request事件 req请求对象
sever.on('request',(req,res)=>{
console.log('someone visit website')
})
// 启动服务器
sever.listen(8080,function (){
console.log('website http://127.0.0.1:8080')
})
2.创建一个服务器并且使用send()给客户端响应一段字符串,内容为请求的地址和请求方法。
const http = require('http')
const sever = http.createServer()
// req请求对象 包含了客户端请求的数据
sever.on('request',(req,res)=>{
const url = req.url
const method = req.method
const str = `你请求的地址是${url},请求方法为${method}`
// res.end()响应客户端的请求
// 如果调用res.end()出现中文乱码的情况需要手动设置编码格式
res.setHeader('Content-Type','text/html;charset=utf-8')
res.end(str)
})
sever.listen(8080,()=>{
console.log('The website is http://127.0.0.1:8080')
})
3.根据不同的请求url响应不同的内容
如果请求的地址为“/”或者“/index.html”响应首页,如果请求地址为“/about.html”响应关于页面,否则响应404页面
// 根据不同的url响应不同的内容
const http = require('http')
const sever = http.createServer()
sever.on('request',(req,res)=>{
let content = '<h1>Not Fonud 404</h1>'
const url = req.url
// console.log(url)
if(url==='/' || url==='/index.html') {
content = '<h1>首页</h1>'
}
else if (url==='/about.html') {
content = '<h1>关于页面</h1>'
}
res.setHeader('Content-Type','text/html;charset=utf-8')
res.end(content)
})
sever.listen(8080,()=>{
console.log('http://127.0.0.1:8080')
})
4.根据不同的请求url响应相应的HTML页面
判断url地址决定要响应的页面,然后利用path模块获取对应HTML文件的路径,之后利用fs模块读取文件内容,最后res.send()将读取的内容响应给浏览器。
const http = require('http')
const fs = require('fs')
const path = require('path')
const server = http.createServer()
server.on('request',(req,res)=>{
let url = ''
if (req.url === '/') {
url = path.join(__dirname,'./html/index.html')
// console.log(url)
}
else {
url = path.join(__dirname,'./html',req.url)
}
fs.readFile(url,'utf-8',(err,datastr)=>{
res.setHeader('Content-Type','text/html;charset=utf-8')
if (err) res.end('<h1>404 Not Fonud !</h1>')
res.end(datastr)
})
})
server.listen(8080,()=>{
console.log('server running is http://127.0.0.1:8080')
})
path.join() 该方法用于拼接路径
fs.readFile() 读取文件成功会将读取的内容返回给回调函数的datastr,读取失败则会返回err对象。