node post get 提交数据
// 当前项目(包)入口文件
const http = require('http');
const fs = require('fs');
const path = require('path')
const mime = require('mime')
const url = require('url')
const queryString = require('querystring')
http.createServer((req, res) => {
res.render = function (filename) {
res.setHeader('Content-Type', mime.getType(filename))
fs.readFile(filename, (err, data) => {
if (err) {
res.writeHead(404, 'not found', {
'Content-Type': 'text/html;charset=utf-8'
});
res.end('404')
}
res.end(data)
})
}
var urlObj = url.parse(req.url, true)
req.url = req.url.toLowerCase();
req.method = req.method.toLowerCase();
// 设计路由
// 当用户请求 / /index 显示index.html -get
if (req.url == '/' || req.url === '/index' && req.method === 'get') {
fs.readFile(path.join(__dirname, 'data', 'data.json'), 'utf-8', (err, data) => {
console.log(err.code)
if (err && err.code != 'ENOENT') {
throw err
}
var list = JSON.parse(data || '[]')
res.render(path.join(__dirname, 'iview', 'index.html'))
})
} else if (req.url == '/item' && req.method === 'get') {
res.render(path.join(__dirname, 'iview', 'item.html'))
} else if (req.url == '/submit' && req.method === 'get') {
res.render(path.join(__dirname, 'iview', 'submit.html'))
} else if (req.url.startsWith('/add') && req.method === 'get') {
// 使用get提交新闻
// 获取提交数据 保存在json 跳转到新闻列表页
fs.readFile(path.join(__dirname, 'data', 'data.json'), 'utf-8', (err, data) => {
console.log(err.code)
if (err && err.code != 'ENOENT') {
throw err
}
var list = JSON.parse(data || '[]')
list.push(urlObj.query)
fs.writeFile(path.join(__dirname, 'data', 'data.json'), JSON.stringify(list), (err) => {
if (err) {
throw err
}
res.writeHead(302, 'Found', {
'Location': '/'
});
res.end();
})
})
/* let list = [];
list.push(urlObj.query);
fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(list),(err)=>{
if(err){
throw err
}
res.writeHead(302,'Found',{'Location':'/'});
res.end();
}) */
} else if (req.url == '/add' && req.method === 'post') {
// 使用post提交新闻
// 获取提交数据 保存在json 跳转到新闻列表页
fs.readFile(path.join(__dirname, 'data', 'data.json'), 'utf-8', (err, data) => {
// console.log(err.code)
if (err && err.code != 'ENOENT') {
throw err
}
var list = JSON.parse(data || '[]')
let infoArr = [];
// 获取post提交数据 监听req data req end 监听
req.on('data', (info) => {
// info 本次提交的一部分数据 数据类型是buffer对象
infoArr.push(info)
})
req.on('end', () => {
var postBody = Buffer.concat(infoArr).toString('utf-8')
// 查询字符串转json
postBody = queryString.parse(postBody)
list.push(postBody)
fs.writeFile(path.join(__dirname, 'data', 'data.json'), JSON.stringify(list), (err) => {
if (err) {
throw err
}
res.writeHead(302, 'Found', {
'Location': '/'
});
res.end();
})
})
/* list.push(urlObj.query)
fs.writeFile(path.join(__dirname, 'data', 'data.json'), JSON.stringify(list), (err) => {
if (err) {
throw err
}
res.writeHead(302, 'Found', {
'Location': '/'
});
res.end();
}) */
})
} else if (req.url.startsWith('/stait') && req.method === 'get') {
// 如果用户是以这个请求 则是静态资源
res.render(path.join(__dirname, req.url))
} else {
res.writeHead(404, 'not found', {
'Content-Type': 'text/html;charset=utf-8'
});
res.end('没有页面');
}
}).listen(8090, () => {
console.log('http://localhost:8090')
})