当前位置: 首页 > news >正文

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

相关文章:

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

// 创建服务 const app http.createServer((req, res)>{ // 设置给前端返回信息的字符编码 res.setHeader(content-type, text/html; charsetutf-8) let address req.url.split(?)[0] //首先创建一个数组&#xff0c;后面把它的数据放在JSON文件 let…...

【Bootstrap学习 day7】

Bootstrap按钮 按钮样式 使用.btn相关类实现 <button type"button" class"btn">基本按钮</button> <button type"button" class"btn btn-primary">主要按钮</button> <button type"button" cl…...

Zookeeper无法启动,报“Unable to load database on disk”

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 测试环境部署zookeeper的服务器磁盘满了&#xff0c;引起服务异常&#xff0c;将zookeeper进程杀掉之后&…...

【Web2D/3D】CSS3的2D/3D转换、过渡、动画(第一篇)

1. 前言 本篇开始介绍Web2D和3D相关基础知识&#xff0c;会从CSS3的2D/3D转换、过渡、动画&#xff0c;讲到Canvas 2D图形绘制&#xff0c;再到SVG&#xff0c;最后到WebGL。 坐标系&#xff1a;左上点是坐标原点(0,0)&#xff0c;x轴正方向向右&#xff0c;y轴正方向向下&…...

uView NumberBox 步进器

该组件一般用于商城购物选择物品数量的场景 注意&#xff1a;该输入框只能输入大于或等于0的整数 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff09;H5小程序√√√√ #基本使用 通过v-model绑定value初始值&#xff0c;此值是双向绑定的&…...

三菱plc的点动控制循环(小灯闪烁,单控气缸循环)

以为前一段时间小编做了一个气缸定时循环的程序&#xff0c;根据程序有不足之处&#xff0c;所以小编写下这篇文章&#xff0c;将网络上的plc小灯控制进行总结&#xff01;如果对你有帮助&#xff0c;不要忘了点赞收藏&#xff01;如果有更加好的梯形图&#xff0c;欢迎评论&am…...

学习Go语言Web框架Gee总结--http.Handler(一)

学习Go语言Web框架Gee总结--http.Handler http-base/go.modhttp-base/main.gohttp-base/gee/gee.gohttp-base/gee/go.mod 网站学习来源&#xff1a;Gee 代码目录结构&#xff1a; http-base/go.mod //指定当前模块的名称为 "example" module example//指定当前模…...

react+redux+antd-mobile 之 记账本案例

1.环境搭建 //使用CRA创建项目&#xff0c;并安装必要依赖&#xff0c;包括下列基础包 //1. Redux状态管理 - reduxjs/toolkit 、 react-redux //2. 路由 - react-router-dom //3. 时间处理 - dayjs //4. class类名处理 - classnames //5. 移动端组件库 - antd-mobile //6. 请…...

Day22

Day22 一,生产者消费者模型 1.1,单个生产者单个消费者 public class Test01 {/*** 知识点&#xff1a;生产者消费者模型 - 单个生产者单个消费者* * 分析&#xff1a;* 产品类 - Phone&#xff1a;属性(brand,price)* 生产者线程 - Producer* 消费者线程 - Consumer* …...

Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0)

Windows下linux 子系统 WSL2怎样使用usb串口&#xff08;USBIPD-win4.0.0&#xff09; 一、widows安装二、ubuntu安装三、widows配置四、wsl配置 一、widows安装 https://github.com/dorssel/usbipd-win 直接下载最新版本的msi文件安装 二、ubuntu安装 sudo apt install lin…...

飞腾Ubantu22.04.3安装OpenNebula测试

1.概述 因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包&#xff0c;借此用源码编译进行测试。 2.官网github地址 下载解压存放在服务器上&#xff1a; https://github.com/OpenNebula/minione/blob/master文件目录&#xff1a; 3.安装依赖包 sudo apt -y …...

gookit/color - Go语言命令行色彩使用库教程

gookit/color - Go语言命令行色彩使用库教程 1.安装2.基础颜色(16-color)3.256色彩/RGB风格 1.安装 go get github.com/gookit/color2.基础颜色(16-color) 提供通用的API方法&#xff1a;Print Printf Println Sprint Sprintf 1、例如&#xff1a; color.Yellow.Println(&q…...

python弹奏《起风了》

代码是很大的! 其实就是python用ctypes调用Win API import ctypes import threading import time winmm = ctypes.windll.winmmclass Scale:Rest = 0C8 = 108B7 = 107A7s = 106A7 = 105G7s = 104G7 = 103F7s = 102F7 = 101E7 = 100D7s = 99D7 = 98C7s = 97C7 = 96B6 = 95A6s…...

Linux---all

Linux常用命令&#xff1a; Linux常用命令-CSDN博客 Linux命令大全(超详细版)_linux命令行大全-CSDN博客Linux常用命令大全&#xff08;非常全面&#xff09;-CSDN博客Linux 命令大全&#xff08;看这一篇就足够&#xff09;_linux命令-CSDN博客Linux常用命令大全——赶紧收藏…...

前端中级算法题

前端中级算法题 反转字符串 编写一个函数&#xff0c;接受一个字符串作为输入&#xff0c;并返回反转后的字符串。 示例&#xff1a; function reverseString(str) {return str.split().reverse().join(); }reverseString(hello); // 输出: olleh 找出数组中的最大值 编写一个函…...

Ant Design Vue 编译后的网页特点是什么,怎么确认他是用的前端 Ant Design Vue 技术栈的呢?

Ant Design Vue 是一个前端 UI 框架&#xff0c;使用 Vue.js 构建。它包含了大量的预设样式和组件&#xff0c;如按钮、表单、表格等&#xff0c;可以帮助开发者快速构建出优雅且功能丰富的网页。但是&#xff0c;要确定一个编译后的网页是否使用了 Ant Design Vue&#xff0c;…...

python | PYTHON正则表达式

操作符说明实例.表示任何单个字符[]字符集&#xff0c;对单个字符给出取值范围[abc]表示a、b、c&#xff0c;[a-z]表示a到z单个字符[^ ]非字符集&#xff0c;对单个字符给出排除范围[^abc]表示非a或b或c的单个字符*前一个字符0次或无限次扩充abc* 表示ab&#xff0c;abc&#x…...

为什么大学c语言课不顺便教一下Linux,Makefile

为什么大学c语言课不顺便教一下Linux&#xff0c;Makefile&#xff0c;git&#xff0c;gdb等配套工具链呢? 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&…...

Go后端开发 -- main函数 变量 常量 函数

Go后端开发 – main函数 & 变量 & 常量 & 函数 文章目录 Go后端开发 -- main函数 & 变量 & 常量 & 函数一、第一个main函数1.创建工程2.main函数解析 二、变量声明1.单变量声明2.多变量声明 三、常量1.常量的定义2.优雅的常量 iota 四、函数1.函数返回…...

2023/12/30 c++ work

定义一个Person类&#xff0c;私有成员int age&#xff0c;string &name&#xff0c;定义一个Stu类&#xff0c;包含私有成员double *score&#xff0c;写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数&#xff0c;完成对Person的运算符重载(算术运算符、条件运算…...

修复肝衰竭的“免疫刹车”:ANXA1是控制炎症失控、促进消退的关键内源信号

慢加急性肝衰竭&#xff08;ACLF&#xff09;的发病进程主要由全身性炎症反应及免疫功能紊乱共同驱动&#xff0c;其病理机制复杂且临床预后较差。2026年4月&#xff0c;浙江大学与斯坦福大学&#xff0c;在Hepatology期刊在线发表了题为“Dissecting the liver inflammation e…...

ARM设备运行x86_64程序:Box64高效兼容方案深度解析

ARM设备运行x86_64程序&#xff1a;Box64高效兼容方案深度解析 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 你是否曾在AR…...

如何快速清理电脑中的重复图片:AntiDupl.NET终极指南

如何快速清理电脑中的重复图片&#xff1a;AntiDupl.NET终极指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾因电脑中堆积如山的重复图片而烦恼&#xff1…...

Poppins字体:免费开源的现代几何无衬线字体终极指南

Poppins字体&#xff1a;免费开源的现代几何无衬线字体终极指南 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 你是否正在寻找一款既美观又实用的字体来提升设计项目的视觉品质…...

PortProxyGUI:Windows端口转发图形化管理工具终极指南

PortProxyGUI&#xff1a;Windows端口转发图形化管理工具终极指南 【免费下载链接】PortProxyGUI A manager of netsh interface portproxy which is to evaluate TCP/IP port redirect on windows. 项目地址: https://gitcode.com/gh_mirrors/po/PortProxyGUI 在Window…...

Awesome BigData实时数据集成平台:CDC连接器与数据同步工具终极指南

Awesome BigData实时数据集成平台&#xff1a;CDC连接器与数据同步工具终极指南 【免费下载链接】awesome-bigdata A curated list of awesome big data frameworks, ressources and other awesomeness. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-bigdata G…...

30分钟从零到精通:Czkawka Windows文件清理完全手册

30分钟从零到精通&#xff1a;Czkawka Windows文件清理完全手册 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka Czkawka是一款功能强大的开源文件清…...

先进制程EPE挑战:从系统误差到量测革命,如何驯服边缘位置误差

1. 从“理所当然”到“如履薄冰”&#xff1a;边缘位置误差如何成为先进制程的“隐形杀手”在半导体行业过去的黄金岁月里&#xff0c;工程师们有一个近乎奢侈的“共识”&#xff1a;芯片内部那些由光刻、刻蚀定义的特征边缘&#xff0c;可以被理所当然地看作是笔直且在不同工艺…...

RTKLIB2.4.3进阶:在VS2017中通过.conf与命令行参数高效驱动PPP数据处理

1. RTKLIB与PPP数据处理基础 RTKLIB作为开源GNSS数据处理工具链&#xff0c;在精密单点定位&#xff08;PPP&#xff09;领域有着广泛应用。2.4.3版本虽然发布较早&#xff0c;但其稳定性和功能完整性使其至今仍是许多高精度定位项目的首选。我在多个测绘项目中实测发现&#x…...

AI 驱动多态钓鱼攻击机理与行为防御体系研究

摘要 生成式 AI 技术推动网络钓鱼从规模化群发转向实时动态变异的多态化攻击模式&#xff0c;以每 15–20 秒生成唯一邮件、链接与附件&#xff0c;彻底颠覆基于重复特征与静态规则的传统防御逻辑。Cofense 2025 年威胁数据显示&#xff0c;76% 的恶意 URL 具备唯一性、82% 的恶…...