• Node连接MySql数据库创建Api接口


     

    一个很简单的评论网页,实现的功能是筛选数据和添加数据,一共三个api接口

    app.js

    1. // 1. 导入 mysql 模块
    2. const mysql = require('mysql')
    3. var bodyParser = require('body-parser');
    4. // 2. 建立与 MySQL 数据库的连接关系
    5. const db = mysql.createPool({
    6. host: 'localhost', // 数据库的 IP 地址
    7. user: 'root', // 登录数据库的账号
    8. password: 'root', // 登录数据库的密码
    9. database: 'movies', // 指定要操作哪个数据库
    10. })
    11. // 引入express
    12. const express = require('express')
    13. //创建一个app实例对象
    14. const app = express()
    15. // 中间件定义post传递的格式
    16. app.use(express.json())
    17. app.use(bodyParser.urlencoded({extended:true}));//Context-Type 为application/x-www-form-urlencoded 时 返回的对象是一个键值对,当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。
    18. app.use(bodyParser.json());//用于解析json 会自动选择最为适宜的解析方式
    19. app.get('/getlist',(req,res)=>{
    20. const sqlStr = 'select * from liaotian'
    21. db.query(sqlStr, (err, results) => {
    22. // 失败
    23. if (err) {
    24. return console.log(err.message)
    25. }
    26. // /配置请求的域名,*代表任意
    27. res.header("Access-Control-Allow-Origin", "*");
    28. // 支持跨域请求类型
    29. res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    30. //配置请求头信息,包含字符集等等
    31. res.header("Content-Type", "application/json;charset=utf-8");
    32. res.send({
    33. code: 200,
    34. msg: '获取数据成功',
    35. data: results
    36. })
    37. })
    38. })
    39. app.post('/search', (req, res) => {
    40. // /配置请求的域名,*代表任意
    41. res.header("Access-Control-Allow-Origin", "*");
    42. // 支持跨域请求类型
    43. res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    44. //配置请求头信息,包含字符集等等
    45. res.header("Content-Type", "application/json;charset=utf-8");
    46. // 获取到客户端通过查询字符串,发送到服务器的数据
    47. const body = req.body
    48. const sqlStr2 = `select * from liaotian where text like '%${body.text}%';`
    49. db.query(sqlStr2, (err, results) => {
    50. // 失败
    51. if (err) {
    52. return console.log(err.message)
    53. }
    54. res.send({
    55. status: 200,
    56. msg: '查询数据成功',
    57. data: results
    58. })
    59. })
    60. })
    61. app.post('/add', (req, res) => {
    62. // /配置请求的域名,*代表任意
    63. res.header("Access-Control-Allow-Origin", "*");
    64. // 支持跨域请求类型
    65. res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    66. //配置请求头信息,包含字符集等等
    67. res.header("Content-Type", "application/json;charset=utf-8");
    68. // 获取到客户端通过查询字符串,发送到服务器的数据
    69. const body = req.body
    70. const sqlStr3 = `INSERT INTO liaotian VALUES ('${body.text}');`
    71. db.query(sqlStr3, (err, results) => {
    72. // 失败
    73. if (err) {
    74. return console.log(err.message)
    75. }
    76. res.send({
    77. status: 200,
    78. msg: '添加数据成功',
    79. data: results
    80. })
    81. })
    82. })
    83. // listen()端口监听
    84. app.listen(80,(err)=>{
    85. if(!err){
    86. console.log('服务器启动成功了')
    87. }
    88. })

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. li {
    10. list-style: none;
    11. }
    12. style>
    13. head>
    14. <body>
    15. <input type="text">
    16. <button class="search">搜索button>
    17. <button class="add">增加button>
    18. <ul>
    19. ul>
    20. <script>
    21. // 数据渲染
    22. function render() {
    23. $('ul').empty('')
    24. $.get(
    25. 'http://127.0.0.1/getlist',
    26. function(res) {
    27. console.log(res);
    28. res.data.forEach(item => {
    29. console.log(item.text);
    30. let li = `
    31. ${item.text}
    32. `
  • $('ul').append(li)
  • })
  • }
  • )
  • }
  • render()
  • // 查找数据
  • $('.search').click(function() {
  • $('ul').empty('')
  • $.post(
  • 'http://127.0.0.1/search',
  • {text: $('input').val()},
  • function(res) {
  • console.log(res);
  • res.data.forEach(item => {
  • console.log(item.text);
  • let li = `
  • ${item.text}
  • `
  • $('ul').append(li)
  • })
  • }
  • )
  • })
  • // 添加数据
  • $('.add').click(function() {
  • $('ul').empty('')
  • $.post(
  • 'http://127.0.0.1/add',
  • {text: $('input').val()},
  • function(res) {
  • console.log(res);
  • render()
  • }
  • )
  • })
  • script>
  • body>
  • html>
  • 相关阅读:
    数据结构——队列
    android junit 单元测试与输出日志信息查看处理
    webpack基础教程
    Linux·字符设备再分析
    【工程光学】像差
    基于新版Opencv5.x(C++)流媒体视频流实现网页浏览器人脸检测
    记一次DNS问题排查
    [Java]细节与使用经验
    云原生|kubernetes 你真的学废了吗---实战k8s 二(命令行创建各类资源)
    最基础的协同过滤介绍
  • 原文地址:https://blog.csdn.net/weixin_45932821/article/details/127811518