模拟注册
//json文件模拟一个数据库存储用户信息,数据结构如下,
{
"id": 1,
"name": "我是用户名",
"password": "1234567"
}
//设置路由,/doRegister 接受post请求
//这里使用序列化(JSON.stringify),反序列化(JSON.parse),进行数据的增删模拟
if (path === '/doRegister' && request.method === 'POST'){
let dataString = ''
request.on('data', (data) => {
dataString += data//拼接数据
})
request.on('end', () => {
const data = JSON.parse(fs.readFileSync('./db/user.json').toString())
const newUser = { id: data[data.length - 1]['id'] + 1, ...JSON.parse(dataString) }
data.push(newUser)
fs.writeFileSync('./db/user.json', JSON.stringify(data))//存入数据
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end('成功');
})
}
//ajax 发送post 请求
const $form = $('#register')//找到id 为register的元素
$form.on('submit', (e) => {//监听submit事件
e.preventDefault()
const name = $form.find('input[name=name]').val()//拿到value
const password = $form.find('input[name=password]').val()
$.ajax({//发送请求
url: '/doRegister',
data: JSON.stringify({ name, password }),
method: 'POST',
contentType: 'text/json;charset=UTF-8'
}).then(res => {
console.log(res)
alert('注册成功')
location.href = '/sign_in.html'
})
})
模拟cookie
Cookie是服务器下发给浏览器的一段字符串
浏览器必须保存这个Cookie(除非用户删除)
之后发起相同二级域名请求时,浏览器必须附上Cookie
if (path === '/doRegister' && request.method === 'POST') {//注册对应路由
let postData = ''
request.on('data', (data) => {
postData += data//数据拼接
})
request.on('end', () => {
let userDB = JSON.parse(fs.readFileSync('./db/user.json').toString())//读取用json模拟的数据库文件
postData = JSON.parse(postData)//转成对象
const id = userDB[userDB.length - 1] && userDB[userDB.length - 1].id + 1 || 1
userDB.push({ id, ...postData })
fs.writeFileSync('./db/user.json', JSON.stringify(userDB))
response.statusCode = 200
const random = Math.randm
response.setHeader('Set-Cookie', `sessionId=${id}`, 'HttpOnly')
response.write('注册成功')
response.end()
})
}