当前位置:   article > 正文

node 接口编写(简单)

node 接口编写(简单)

这里我也就不废话了,这里我就不讲数据爬取了,直接给大家展示

这里我会将一个整体的接口分为几个单独的模块,进行封装(为了以后多功能的处理,防止出错后,不方便查找),这里我使用的是http 不是express

数据库的链接(mysql模块.js)
数据库的链接我单独放在一个js文件里面(mysql模块.js)

// 导入mysql模块
var mysql = require('mysql');

// 创建数据库连接
var connection = mysql.createConnection({
  host     : 'localhost',  // 主机名
  user     : 'root',  // 用户名
  password : '123456',  // 数据库密码
  database : 'test'  // 数据库名
});
//将该方法暴露出来,让别的文件可以调用该方法
module.exports = (sql, callback) => {
    connection.query(sql, (error, results, fields) => {
        if (error) throw error;
        callback(results);//将得到的数据返回
    })
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

module.exports与exports的区别
exports是引用 module.exports的值。module.exports 被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports

中间层代码(zhong模块.js)

需要导入的模块

const query = require("./mysql模块")
  • 1

导入封装的js文件

const fs = require("fs")
  • 1

引入读写模块,为了下面静态资源的读取

const path = require("path")
  • 1

同样也是为了静态文件的读取

const querystring = require("querystring")
  • 1

对http请求所带的数据进行解析

// 后端路由  
// 后端路由指的是 url跟相关逻辑的对应关系
// 后端写接口  也就是写路由

// 导入数据库模块
const query = require("./mysql模块")//导入封装的js文件
const fs = require("fs");//引入读写模块,为了下面静态资源的读取
const path = require("path");//同样也是为了静态文件的读取
const querystring = require("querystring");//对http请求所带的数据进行解析


// 定义暴露的方法
module.exports = (request, response) => {
    let reqUrl = request.url;//前端传来的url,其实这是后端定义,
    //给前端的,所以在想这个问题时,应该是先从后端想起,我能应该抛弃前端的思维
    const reqMed = request.method;//获取请求方式
    const url = new URL("http://" + request.headers.host + reqUrl);//获取url
    //判断前端ajax传入的url是否满足条件,后面get可省略,默认为get请求
    if (reqUrl == "/list" && reqMed == "GET") {
        // 调用mysql模块.js中暴露的方法  查询数据库 查在herolist表里面的数据
        query("select * from herolist", results => {
        //将数据处理后传回前台  转换为 JSON 字符串
            response.end(JSON.stringify(results))
        })
    } 
    //同样是判断
    else if (url.pathname == "/detail") {
   // 获取前端传入url中的id值 ,将该值用来进行接下来的查找
        const heroId = url.searchParams.get("id");
        //调用mysql模块.js中暴露的方法
        query(`select * from herolist where Id=${heroId}`, results => {
        //这里是让后台传回去的数据再进行处理,方便前台调用
            response.end(JSON.stringify(results[0]))
        })
    } else if (reqUrl == "/addHero" && reqMed == "POST") {
        let str = "";
        //因为数据是以流的形式传输的所以这里进行拼接
        request.on("data", chunk => {
            str += chunk;
        })
        //传输完毕后执行
        request.on("end", () => {
        //将一个字符串反序列化为一个对象。
            const postData = querystring.parse(str);
            query(`insert into herolist (heroname, heroIcon) values ('${postData.heroName}', '${postData.heroIcon}')`, results => {
                response.end(JSON.stringify({
                //这里是为了给前端返回数据,证明我数据库处理完毕
                    status: 200,
                    msg: "添加成功"
                }))
            })
        })
    } else {
        // 读取静态资源,
        fs.readFile(path.join(__dirname, "views", reqUrl), (err, data) => {
            if (!err) {
                // 存在当前路径
                response.end(data);
            } else {
                response.end("404");
            }
        })
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

querystring.parse
parse这个方法是将一个字符串反序列化为一个对象。

http模块(index.js)

// 1. 读取静态资源
const http = require("http");
const router=require("./中模块")
// 搭服务器
const server = http.createServer((request, response) => {
    router(request, response)
})

// 服务器监听
server.listen("4399", () => {
    console.log("start");
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

上面三个js文件就是整个接口的组成,我们学习接口的目的并不是让我们去公司写接口,写接口终归是后端的事情,而且我们学的也只是皮毛,我们主要是养成一个习惯,让我们了解后端的操作,方便以后去了公司,我们跟后端进行合作,有什么不会的可以私信我,我会一一回复,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/69004
推荐阅读
相关标签
  

闽ICP备14008679号