0基础教你用node写后端接口访问数据库

一、环境准备

安装node.js

node这里我们就不赘述了,相信大家都会,不会的可以去搜教程。隔壁有好多大神已经给大家出教程了。

安装express

express框架是一个快速构建web项目的框架
它可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
安装命令

// 全局安装express
npm install -g express

安装cors

cors是一种跨域方法,它是W3C标准,属于跨域Ajax请求的根本解决方案。支持GET和POST请求。缺点是不兼容某些低版本的浏览器。具体使用方法下文会说明
安装命令

// 安装cors
npm i cors

安装mysql

node中提供了操作数据库的包mysql,可以使用其连接数据库,数据库的具体安装方法和教程请自行搜索,本文不做赘述。

//安装mysql包的命令 版本号自行匹配
npm i mysql

至此位置我们的环境就准备好了,接下来就可以在前端的基础上写后端代码了,成为一个全栈牛马指日可待。

二、开始码代码

首先在你的vue项目中创建一个server的文件夹,至于命名无所谓,你想叫什么都可以。在server文件夹下创建两个文件夹分别是存放数据库配置的DB文件夹和存放接口的API文件夹,以及一个入口文件index.js。如下图所示。
在这里插入图片描述

1、我们先看怎么连接数据库

在DB文件夹中创建一个任意命名的js文件

// 引入mysql框架
const mysql = require('mysql')
// 创建连接对象
const option = {
    host: 'localhost', // 连接的数据库的地址,这里我是本机就用localhost代替
    user: 'root',// 用户名 安装数据库时设置的账号
    password: 'root', // 密码 
    port: '',  // 数据库端口号
    database: '', //数据库名
    connectionTimeout: 1000, // 连接超时事件
    multipleStatements: false, // 一次执行多条sql语句
}
// 创建连接对象 并将对象抛出供其他文件使用
const conn = mysql.createConnection(option)
module.exports = conn;

2、编写接口

在api文件内创建一个js文件 代码如下

const express = require('express') // 引入express框架
const conn = require("../DB/db")  //导入前面写好的数据库连接对象
const router = express.Router()  // 创建路由对象
// 开启连接提示
conn.connect((err) => {
   if (err) {
        console.log('连接失败')
        return;
    };
    console.log('连接成功')
})
// 编写一个测试接口
router.post("/test",(req,res)=>{
    res.json({code:200,data:"123"})
})
module.exports = router;

3、启动接口

接口编写完毕后,就到了启动服务的时候了,一旦启用成功前端就可以通过网络请求访问了

// 接口的入口文件
const express = require('express')
const app = express()
const cors = require('cors')
const bodyParser = require('body-parser')
const tj = require("./api/tj_api") // 引入接口文件

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}))

app.listen(3000, () => console.log('服务启动'))
app.use("/tj",tj); // 使用接口文件并给一个访问地址
module.exports=app;

使用node .\index.js命令启动服务 记得终端路径是在你index的目录下哦

4、调用接口

这里我们使用axios方法调用接口,vue中配置axios的方法相信大家都已经会了,我们就不多说了。老规矩直接上代码。

// 我们通过访问tj路径进入接口的入口文件 进而访问到接口文件 最终查询到目标接口/test。
this.axios.post('localhost:3000/tj/test', {table_name: 'jl'})
          .then((response) => {
            console.log(response)
          }).catch((error) => {
        console.log(error);
      })

看到这了有人说,你引用了mysql但是接口里没有写呀。
在这里插入图片描述
这里其实很简单,我们只要稍微改动一下这个地方

//我们先简单看下查询语句 其他的语句类似哦
router.post("/test",(req,res)=>{
	// 我们前端传递的参数都放到了req中了哦,具体的根据情况而定
	 let table_name = req.body.table_name
	 // 通过query 执行sql
    conn.query(`select * from ${table_name}`, (err, result) => {
        if (err) {
            res.send(err).end();
        } else {
            res.json({code: 200, data: result}).end()
        }
    })
})

当然你还可以把执行的sql语句写在外面,将参数动态传进去

router.post("/test",(req,res)=>{
	 let table_name = req.body.table_name
	 let id = req.body.id
	 let sql = `select * from ${table_name} where id = ?`
	 // 通过query 执行sql
    conn.query(sql,[id] ,(err, result) => {
        if (err) {
            res.send(err).end();
        } else {
            res.json({code: 200, data: result}).end()
        }
    })
})

这样就可以让参数更灵活以适应更多的情况哦
如果一路下来都没有太大的问题,恭喜你 已经步入后端的大门了,接下来恭喜你成为一名全栈牛马,让我们一起在牛马的道路上越走越远吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值