手把手教express + mysql 包写接口

基本介绍

Express

Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架

  • web 开发: 对不同的请求能够显示页面;提供接口服务;
  • 框架是一个半成品,用来快速解决一类问题;框架:bootstrap, lay-ui, express, vue;
  • 库就是工具集,通过调用api来完成具体的功能。 库:zepto.js , jQuery, day.js, , react ,underscore, lodash, art-template, axios, echart.....

理解:

  • 我们前面用http模块来支持web服务,写接口 ----- 原生js
  • 现在要用express来写web服务,写接口 ------ jQuery

MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品 。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

  • 体积小、速度快、总体拥有成本低,一般中小型网站的开发都选择 MySQL 作为网站数据库。
  • 搭配 PHP 和 Apache 可组成良好的开发环境。

目标:

简单来说就是写一个真正的接口,利用express,MySQL包.

要求:

接口1 : 

添加学生数据

url: localhost:3000/api/student

method: post

参数格式:普通键值对

        name: 字符串

        age: 数值

测试:postman来测试

接口2:

获取所有的学生数据

url: localhost:3000/api/student

method: get

参数:无

测试:postman来测试

操作步骤

1.1任意位置创建一个文件夹,serverAPI

进行初始化 npm init --yes

安装包: npm i express mysql

 

 

 

 

2工具

node.js操作mysql:能使用mysql包来操作mysql数据库.要想使用这个包连接数据库,首先确保电脑有mysql

一共需要4个步骤:

  1. 加载 MySQL 模块

  2. 创建 MySQL 连接对象

  3. 连接 MySQL 服务器

  4. 执行SQL语句

由于他们的基本语法格式是一致的,只是要指向的sql语句不同而已,所以,我们可以对他们进行一个简单的封装.成为模块化分装

创建一个文件夹,存放前三个步骤 ,一般我们起文件夹名起有意义的名字,所以我起了一个utils--->sql.js

     

 

sql.js
// 1.加载mysql
var mysql = require('mysql');
// 2.创建连接
var connection = mysql.createConnection({
  host: 'localhost',   // 你要连接的数据库服务器的地址
  port: 3306,// 端口号
  user: 'root',        // 连接数据库服务器需要的用户名
  password: 'root',        // 连接数据库服务器需要的密码
  database: 'node136'      //你要连接的数据库的名字
});
// 3.连接数据库
connection.connect((err) => {
  // 如果有错误对象,表示连接失败
  if (err) return console.log('数据库连接失败')
  // 没有错误对象提示连接成功
  console.log('mysql数据库连接成功')
});
module.exports = connection

3在server.js操作

3.1使用express快速创建一个web服务器

// 0. 导入 Express
const express = require('express')

// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express()

// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
  res.send('hello world')
})

// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))

根据我们的需求代码如下:

const express = require('express')
const app = express()
app.post('/api/student', (req, res) => {
  //  1.接受普通键值对的参数
  // 2添加到数据库中
  res.json({ msg: '添加成功', code: 1, result: data })
})
app.get('/api/student', (req, res) => {
      res.json({ msg: '查询成功', code: 1})
})
app.listen(3000, () => {
  console.log('接口服务器启动,3000...');
})

测试

 

3.2接受普通键值对的参数

先用mysql工具传参

 

想要获取普通的键值对,我们需添加app.use(express.  urlencoded()),数据就全部装进req.body中

const express = require('express')
const app = express()

app.use(express.urlencoded())

app.post('/api/student', (req, res) => {

        console.log(req.body);

  //  1.接受普通键值对的参数
  // 2添加到数据库中
  res.json({ msg: '添加成功', code: 1, result: data })
})
app.get('/api/student', (req, res) => {
      res.json({ msg: '查询成功', code: 1})
})
app.listen(3000, () => {
  console.log('接口服务器启动,3000...');
})

 

 

拿到数据后{ name: '张三', age: '25' },我们需要解构赋值 ,接受普通键值对的参数我们就完成了

 const { name, age } = req.body

3.3添加到数据库中(这就用到我们上面封装的sql工具了)

首先导入我们的工具,再进行添加数据库

导入
const connection = require('./utlis/sql')
添加到数据库中
 const sql = `insert into student(name,age) values('${name}',${age})`
    // connection.query(sql语句, (err, data) => {
  connection.query(sql, (err, data) => {
    if (err) {
      console.log(err);
      res.json({ msg: '添加失败', code: 0 })
    } else {
      console.log(data);
      res.json({ msg: '添加成功', code: 1 })
    }
  })

 

 

3.4实现查询

app.get('/api/student', (req, res) => {
//创建sql
  const sql = `select * from student`
  connection.query(sql, (err, data) => {
    if (err) {
      console.log(err);
      res.json({ msg: '查询失败', code: 0 })
    } else {
      console.log(data);
      res.json({ msg: '查询成功', code: 1, result: data })
    }
  })
})

 让我们最后总测试一下,先添加再立马查询

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值