本文共 4193 字,大约阅读时间需要 13 分钟。
虽然当前还未涉及到数据库的知识,但已经可以通过文件读写,实现一个简单的服务器,满足以下需求:
users.json文件,用于存放用户列表数据。index.html文件,实现表单及注册、登录的前端请求功能。进入/lesson09文件夹,运行node server.js命令,在浏览器访问即可查看效果。
服务器开发示例 用户:
密码:
const http = require('http');const url = require('url');const fs = require('fs');const querystring = require('querystring');const server = http.createServer((req, res) => { const method = req.method; let path = ''; let get = {}; let post = {}; if (method === 'GET') { const { pathname, query } = url.parse(req.url, true); path = pathname; get = query; handleRequest(); } else if (method === 'POST') { path = req.url; let arr = []; req.on('data', (buffer) => { arr.push(buffer); }); req.on('end', () => { try { const buffer = Buffer.concat(arr); post = JSON.parse(buffer.toString()); handleRequest(); } catch (error) { console.error('解析POST数据失败,' + error.message); res.writeHead(500); res.end(); } }); } else { handleRequest(); } function handleRequest() { try { if (path === '/reg') { const { username, password } = get; fs.readFile('./users.json', (error, data) => { if (error) { res.writeHead(404); } else { const users = JSON.parse(data.toString()); const usernameIndex = users.findIndex(item => item.username === username); if (usernameIndex >= 0) { res.write(JSON.stringify({ error: 1, msg: '此用户名已存在' })); } else { users.push({ username, password }); fs.writeFile('./users.json', JSON.stringify(users), (error) => { if (error) { res.writeHead(404); } else { res.write(JSON.stringify({ error: 0, msg: '注册成功' })); } res.end(); }); } } }); } else if (path === '/login') { const { username, password } = post; fs.readFile('./users.json', (error, data) => { if (error) { res.writeHead(404); } else { const users = JSON.parse(data.toString()); const usernameIndex = users.findIndex(item => item.username === username); if (usernameIndex >= 0) { if (users[usernameIndex].password === password) { res.write(JSON.stringify({ error: 0, msg: '登录成功' })); } else { res.write(JSON.stringify({ error: 1, msg: '密码错误' })); } } else { res.write(JSON.stringify({ error: 1, msg: '该用户不存在' })); } } res.end(); }); } else { fs.readFile(`.${path}`, (error, data) => { if (error) { res.writeHead(404); } else { res.write(data); } res.end(); }); } } catch (error) { console.error('处理请求出错,' + error.message); res.writeHead(500); res.end(); } }});server.listen(8080); 以上代码示例展示了如何通过Node.js实现一个简单的服务器,支持注册和登录功能。前端通过HTML文件和JavaScript实现用户输入的接口请求,后端通过JavaScript处理请求并根据路径和数据类型返回相应的响应。
转载地址:http://sxjfk.baihongyu.com/