Node.js之增删改查和跨域问题

2020-04-17  本文已影响0人  println文

增删改查

server.js

const http = require("http")
const url = require("url")
const routerModal = require("../router/index")

const getPostData = (req) => {
    return new Promise((resolve, reject) => {
        if (req.method != "POST") {
            resolve({})
            return
        }
        let postData = ""
        req.on("data", chunk => {
            postData += chunk;
        })
        req.on("end", () => {
            // console.log(postData)
            resolve(JSON.stringify(postData))
        })
    })
}

const server = http.createServer((req, res) => {
    // 中文乱码
    res.writeHead(200, { "content-type": "application/json;charset=UTF-8" })
    getPostData(req).then((data) => {
        req.body=data;
        //调用路由的函数
        let resultData = routerModal(req, res);
        if (resultData) {
            // 解析为json数据
            res.end(JSON.stringify(resultData))
        } else {
            // 可以设置404页面为html
            res.writeHead(200, { "content-type": "text/html" })
            res.end("404 not found")
        }
    })
})

server.listen(3000, () => {
    console.log("监听3000端口...")
})

router.js

const url = require("url")
const { getUser, addUser, deleteUser, updateUser } = require("../controller/user.js")

function handleRequest(req, res) {
    const urlObj = url.parse(req.url, true);
    console.log(urlObj);
    if (urlObj.pathname == "/api/getUser" && req.method == "GET") {
        let resultData = getUser();
        return resultData;
    } else if (urlObj.pathname == "/api/addUser" && req.method == "POST") {
        let resultData = addUser(req.body);
        return resultData;
    } else if (urlObj.pathname == "/api/deleteUser" && req.method == "POST") {
        let resultData = deleteUser(urlObj.query.id);
        return resultData;
    } else if (urlObj.pathname == "/api/updateUser" && req.method == "POST") {
        let resultData = updateUser(urlObj.query.id,req.body);
        return resultData;
    }
}

module.exports = handleRequest;

controller.js

module.exports={
    getUser(){
        return[
            {
                id:1,
                name:"steven",
                age:24
            }
        ]
    },
    addUser(userObj){
        console.log(userObj);
        return{
            code:0,
            msg:"添加成功",
            data:null
        }
    },
    deleteUser(id){
        console.log(id);
        return{
            code:0,
            msg:"删除成功",
            data:null
        }
    },
    updateUser(id,userObj){
        console.log(id,userObj);
        return{
            code:0,
            msg:"更新成功",
            data:null
        }
    }
}

跨域问题

浏览器同源策略:协议+域名+端口三者相同
任一不同就是跨域

// 设置允许跨域的域名,*代表任意域名允许
res.setHeader("Access-Control-Allow-Origin","*");

注意:正式服务器不要用*,应该用数组形式,否者接口共享.

跨域2(express-generator)

安装中间件

npm install cors -S

引入

const cors=require('cors')
app.use(cors())
上一篇下一篇

猜你喜欢

热点阅读