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')

})

相关推荐
鲸屿1957 分钟前
python之socket网络编程
开发语言·网络·python
没有梦想的咸鱼185-1037-166333 分钟前
基于R语言机器学习方法在生态经济学领域中的实践技术应用
开发语言·机器学习·数据分析·r语言
@小红花1 小时前
从0到1学习Vue框架Day03
前端·javascript·vue.js·学习·ecmascript
前端与小赵1 小时前
vue3中 ref() 和 reactive() 的区别
前端·javascript·vue.js
向上的车轮1 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang
对你无可奈何1 小时前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
The Chosen One9851 小时前
C++ : AVL树-详解
开发语言·c++
魔云连洲1 小时前
Vue的响应式底层原理:Proxy vs defineProperty
前端·javascript·vue.js
PH_modest1 小时前
【Qt跬步积累】—— 初识Qt
开发语言·qt
Hilaku1 小时前
深入URL和URLSearchParams:别再用正则表达式去折磨URL了
前端·javascript·代码规范