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

})

相关推荐
Dorcas_FE9 分钟前
【tips】动态el-form-item中校验的注意点
前端·javascript·vue.js
八月ouc13 分钟前
解密JavaScript模块化演进:从IIFE到ES Module,深入理解现代前端工程化基石
javascript·es6·模块化·cmd·commonjs·amd·iife
oioihoii14 分钟前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
毕设源码-朱学姐15 分钟前
【开题答辩全过程】以 基于JAVA的恒星酒店客房管理系统为例,包含答辩的问题和答案
java·开发语言
四岁爱上了她18 分钟前
input输入框焦点的获取和隐藏div,一个自定义的下拉选择
前端·javascript·vue.js
思密吗喽18 分钟前
景区行李寄存管理系统
java·开发语言·spring boot·毕业设计·课程设计
Rust语言中文社区21 分钟前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust
小灰灰搞电子24 分钟前
Rust Slint实现颜色选择器源码分享
开发语言·后端·rust
互联网老欣37 分钟前
2025年保姆级教程:阿里云服务器部署Dify+Ollama,打造专属AI应用平台
服务器·阿里云·ai·云计算·dify·ollama·deepseek
烟袅1 小时前
5 分钟把 Coze 智能体嵌入网页:原生 JS + Vite 极简方案
前端·javascript·llm