js创建服务器,以及对接口的理解和创建

// 创建服务

const app = http.createServer((req, res)=>{

// 设置给前端返回信息的字符编码

res.setHeader('content-type', 'text/html; charset=utf-8')

let address = req.url.split('?')[0]

//首先创建一个数组,后面把它的数据放在JSON文件

let user = [{id: 1, username: 'user1', password: '123'}]

//拿到query,它是一个对象,里面有ID,usermane,password

let objParams = url.parse(req.url, true).query

console.log(url.parse(req.url, true))

// 使用switch进行匹配

switch(address){

// 页面的静态托管

case '/index.html':

fs.readFile('./index.html', 'utf-8', (err, data)=>{

res.end(data)

})

break

case '/login.html':

fs.readFile('./login.html', 'utf-8', (err, data)=>{

res.end(data)

})

break

case '/user/login':

// res.end(JSON.stringify({code: 1, message: '登录成功'}))

// 把传递过来的参数和db数据库里面的参数进行对比

fs.readFile('./db/register.json', 'utf-8', (err, data)=>{

let {username, password} = objParams

// console.log(username, password)

let result = JSON.parse(data).find(item=>{

return item.username === username && item.password === password

})

if(!result){

// 注意点:如果验证不通过,必须返回的是用户名或者密码错误,这样可以增加安全性

res.end(JSON.stringify({code: 0, message: '用户名或者密码错误'}))

}else{

res.end(JSON.stringify({code: 1, message: '登录成功'}))

}

})

break

case '/shopping/list':

fs.readFile('./db/goods.json', 'utf-8', (err, data)=>{

res.end(data)

})

case '/user/register':

// fs.writeFile('./db/register.json', JSON.stringify(user), ()=>{

// res.end(JSON.stringify({code: 1, message: '注册成功'}))

// })

// 先读,再写

fs.readFile('./db/register.json', 'utf-8', (err,data)=>{

user.push(objParams)

console.log(data)

fs.writeFile('./db/register.json', JSON.stringify(user), ()=>{

res.end(JSON.stringify({code: 1, message: '注册成功'}))

})

})

break

default:

res.end('<h1>404,你的页面走丢了!</h1>')

}

})

// 监听端口号

app.listen(2307, ()=>{

console.log('你的服务器已经开启了,快来玩啊!http://localhost:2307')

})

相关推荐
前端Hardy28 分钟前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy30 分钟前
别再被setTimeout闭包坑了!90% 的人都写错过这个经典循环
前端·javascript·vue.js
前端Hardy36 分钟前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
前端人类学1 小时前
深入解析JavaScript中的null与undefined:区别、用法及判断技巧
前端·javascript
进击的尘埃3 小时前
Vitest 自定义 Reporter 与覆盖率卡口:在 Monorepo 里搞增量覆盖率检测
javascript
进击的尘埃3 小时前
E2E 测试里的网络层,到底该怎么 Mock?
javascript
DevUI团队4 小时前
🚀 【Angular】MateChat V20.2.2版本发布,新增8+组件,欢迎体验~
前端·javascript·人工智能
DevUI团队4 小时前
🚀 MateChat V1.11.0 震撼发布!新增工具按钮栏组件及体验问题修复,欢迎体验~
前端·javascript·人工智能
学以智用4 小时前
Vue 3 核心函数全解(组合式 API + 常用工具函数)
javascript·vue.js
滕青山4 小时前
HTTP状态查询 在线工具核心JS实现
前端·javascript·vue.js