简易的app

news/2024/7/7 11:25:37
//导包
const express = require('express')
const bodyParser = require('body-parser')
const path = require('path')
var multer = require('multer')
const { cpuUsage } = require('process')
const { fstat } = require('fs')

//用包创建一个文件夹
var upload = multer({data:'uploads/'})

//导入自己写的模块
const db = require(path.join(__dirname,'utf-8','db.js'))

//创建服务器
const app = express()

//用包
app.use(bodyParser.urlencoded({extended:false}))

//写接口(注册路由)
//1.用户登录
app.post('/login',(req,res)=>{
    //1.1 接收用户传递过来的用户名和密码
    let {username,password} = req.body //对象结构语法
    //1.2判断账号和密码是否正确
    //实际开发的时候判断流程:把账号和密码发到数据库中去验证
    if(username == 'admin' && password == '123456'){
        res.send({
            code:200,
            msg:'登录成功'
        })
    }else{
        res.send({
            code:400,
            msg:'登录失败'
        })
    }

    res.send('sb')
})

//2.获取所有英雄
app.get('/getAllHe',(req,res)=>{
    //调用自己的模块,调用里面的方法获取所有英雄
    let list = db.getHeros()
    //返回
    res.send({
        code:200,
        data:list
    })

    res.send('sb')
})

//3.新增英雄
app.post('/add',upload.single("icon"),(req,res)=>{
    console.log(req.file)
    console.log(req.body)
    //用变量报错
    let{name,skill} = req.body
    let icon = req.file.filename
    //把这个新增的英雄的数据,存在db中
    let result = db.addHero({
        name,skill,icon
    })
    //判断
    if(result == true){
        res.send({
            code:200,
            msg:'新增成功'
        })
    }else
    res.send({
        code:500,
        msg:'新增失败'
    })
})

//4.删除英雄
app.get('/delete',(req,res)=>{
    //接收前端传递过来的要删除的英雄的id
    let{id} = req.query
    //console.log(id)
    //用自己写的模块删除
    let result =  db.deleteHeroById(id)
    //判断
    if(result == true){
        res.send({
            code:200,
            msg:'新增成功'
        })
    }else
        res.send({
            code:500,
            msg:'新增失败'
    })
})

//5.根据id获取英雄
app.get('/getHeroById',(req,res)=>{
    //获取前端传递过来的需要编辑的id
    let{id} = req.query;//解析赋值
    //用自己的模块获取详细信息
    let result = db.getHeroById(id)
    //判断
    if(result == true){
        res.send({
            code:200,
            msg:'新增成功'
        })
    }else
        res.send({
            code:500,
            msg:'新增失败'
    })
})

//6.编辑英雄
app.post('/add','不要忘记这里有东西',(req,res)=>{
    //用模块multer来接收用户编辑之后的信息
    //文件 req.file.filename
    //非文件参数 req.body
    //console.log(req.file.filename)
    //console.log(req.body)
    //存进变量里
    let icon = req.file.filename
    let {id,name,skill} = req.body
    //用db来处理
    let result = db.editHero({
        id,
        name,
        skill,
        icon
    })
    //判断
    if(result == true){
        res.send({
            code:200,
            msg:'修改成功'
        })
    }else
        res.send({
            code:500,
            msg:'修改失败'
    })
})

//开启服务器
app.listen(4399,()=>{
    console.log('开始了')
})

http://www.niftyadmin.cn/n/4565888.html

相关文章

Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传...

做一个文件上传到服务器端可能需要以下几点知识,如下: 1.HTTP multipart/form-data 上传报文格式实现手机端上传: 2.选择图片,采用android中父子窗体回调的模式窗体。 3.android 中AsyncTask的使用 4.服务端fileupload文件读写 效…

同源与不同源

同源 - 协议和地址和端口都一样 不同源 - 协议和地址和端口,只要有一个不同就不同源 解决跨域问题 //设置响应头,允许资源被访问/共享 res.setHeader(‘Access-Control-Allow-Origin’,’*’)//表示所有的请求路径都可以请求这个接口 //中间件 //使用…

Android文件图片上传的详细讲解(二)--AsyncTask的用法

AsyncTask的用法 AsyncTask的用法 在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI…

cookie工作流程

类比于后台服务器的使用 //登录接口 app.get(/login,(req,res)>{//假如现在这里已经验证了账号和密码,是正确的,是可以登录的//服务器就会吧cookie响应回去res.writeHead(200,{Content-Type:text/plain; charsetutf-8,"Set-Cookie":userid…

Android文件图片上传的详细讲解(四)---服务端编码

服务端上传采用commons-fileupload上传相关的文件。 package com.easyway.fileupload;import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; i…

英雄管理系统

CSS内容 add.html <!DOCTYPE html> <html lang"zh-cn"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"width…

[转] 搭建XMPP协议,实现自主推送消息到手机

关于服务器端向Android客户端的推送&#xff0c;主要有三种方式&#xff1a;1.客户端定时去服务端取或者保持一个长Socket&#xff0c;从本质讲这个不叫推送&#xff0c;这是去服务端拽数据。但是实现简单&#xff0c;主要缺点&#xff1a;耗电等2.Google的C2DM&#xff0c;具体…

樱花雨

CSS部分 html, body{width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden; } .container{width: 100%;height: 100%;margin: 0;padding: 0;background-color: #000000; }jquery&#xff08;jquery.min.js&#xff09; var RENDERER {INIT_CHERRY_BLOSSOM_COUNT…