Node.js和MySQL编写接口并进行请求

发布时间:2023年12月18日

Node.js和MySQL编写接口并进行请求

一、安装Node.js:首先,确保你的计算机上已经安装了Node.js。你可以从Node.js官方网站(https://nodejs.org)下载并安装适合你操作系统的版本。

二、新建 server 文件夹作为项目根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件:

npm init -y

三、安装必要的依赖

express

Express是一个简洁、灵活且易于使用的Web应用程序框架,非常适合构建各种规模的Web应用程序和API。(**注意:**在新版本的Express中,某些功能已经被弃用或更改。因此,建议查阅官方文档(https://expressjs.com/)以获取最新的使用方法和API参考。)

  1. 安装Express:在项目目录中运行以下命令,安装Express模块:
npm install express
  1. 引入Express模块:在你的Node.js代码中,引入Express模块:
const express = require('express');
  1. 创建Express应用程序:使用express()函数创建一个Express应用程序实例。以下是一个示例:
const app = express();
  1. 定义路由和处理函数:使用app.get()、app.post()等方法定义路由,并为每个路由指定相应的处理函数。以下是一个示例:
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

这个示例中的路由是根路径(/),当客户端发起GET请求时,将返回Hello, World!作为响应。

  1. 启动服务器:使用app.listen()方法来启动服务器并监听指定的端口。以下是一个示例:
app.listen(3000, () => {
  console.log('服务器已启动,监听端口3000');
});
cors(https://www.npmjs.com/package/cors)

CORS(跨来源资源共享)是一种解决跨域访问的机制,允许在一个域中的Web应用程序向另一个域的服务器发送AJAX请求。

  1. 安装cors:在项目目录中运行以下命令,安装cors模块:
npm install cors
  1. 引入cors模块:在你的Node.js代码中,引入cors模块:
const cors = require('cors');
  1. 配置CORS中间件:在Express应用程序中,使用app.use()方法来配置cors中间件,以允许或限制特定来源的跨域访问。以下是一个示例:
app.use(cors());
这里使用了默认的cors配置,将允许所有来源的跨域请求。你也可以根据需要进行自定义配置,例如指定允许的来源、允许的HTTP方法等。
  1. 使用CORS:在路由处理函数中,你可以通过res.header()方法来设置CORS相关的响应头。以下是一个示例:
app.get('/data', (req, res) => {
  res.header('Access-Control-Allow-Origin', 'http://example.com');
  res.header('Access-Control-Allow-Methods', 'GET, POST');
  res.header('Access-Control-Allow-Headers', 'Content-Type');

  // 执行操作,例如返回数据给客户端

  res.json({
    message: '数据获取成功',
    data: {
      // 数据内容
    }
  });
});
body-parser(https://www.npmjs.com/package/body-parser)

body-parser是一个Node.js中间件,用于解析HTTP请求的请求体,以便从POST、PUT和PATCH等请求中获取请求参数。它将请求体解析为JavaScript对象,以便在处理程序中使用。

  1. 安装body-parser:在项目目录中运行以下命令,安装body-parser模块:
npm install body-parser
  1. 引入body-parser模块:在你的Node.js代码中,引入body-parser模块:
const bodyParser = require('body-parser');
  1. 配置body-parser中间件:在Express应用程序中,使用app.use()方法来配置body-parser中间件,以便在每个请求中都能够访问请求体的内容。以下是一个示例:
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

这里使用了两个body-parser的中间件:urlencoded和json。urlencoded用于解析application/x-www-form-urlencoded格式的请求体,而json用于解析application/json格式的请求体。

  1. 使用解析后的请求体:在路由处理函数中,你可以通过req.body来访问解析后的请求体数据。以下是一个示例:
app.post('/users', (req, res) => {
  const { name, email } = req.body;

  // 执行操作,例如将用户数据保存到数据库

  res.json({
    message: '用户创建成功',
    user: {
      name,
      email
    }
  });
});
mysql
  1. 安装MySQL:首先,确保你的计算机上已经安装了MySQL数据库。你可以从MySQL官方网站(https://dev.mysql.com/downloads/installer/)下载并安装适合你操作系统的版本。也可以使用vscode依赖mysql
  2. 安装依赖
npm install mysql 
  1. 创建数据库连接:在你的Node.js代码中,创建一个MySQL数据库连接,并配置连接参数。以下是一个简单的示例:
const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

connection.connect((err) => {
  if (err) {
    console.error('数据库连接失败:', err);
  } else {
    console.log('数据库连接成功');
  }
});

  1. 创建API路由和处理函数:在你的Node.js代码中,创建Express应用程序,并定义API路由和相应的处理函数。以下是一个简单的示例:
const express = require('express');
const app = express();

// 获取所有用户
app.get('/users', (req, res) => {
  const query = 'SELECT * FROM users';

  connection.query(query, (err, results) => {
    if (err) {
      console.error('查询失败:', err);
      res.status(500).json({
        error: '服务器内部错误'
      });
    } else {
      res.json(results);
    }
  });
});

// 启动服务器
app.listen(3000, () => {
  console.log('API服务器已启动,监听端口3000');
});

  1. 启动服务器并测试接口:在项目目录中运行以下命令,启动你的API服务器:
node index.js
  1. 使用API请求工具(例如Postman)或浏览器,访问http://localhost:3000/users,你应该能够看到返回的用户数据。

四、具体代码

const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')

const app = express()
app.use(cors()) // 使用cors中间件


// 解析请求体,使我们能够访问POST请求的数据
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// 创建数据库链接
const connection = mysql.createConnection({
  host: '127.0.0.1',
  user: '用户名',
  password: '密码',
  database: '数据库名'
})
connection.connect()
function initDate () {
  var dt = new Date()
  var y = dt.getFullYear()
  var mt = dt.getMonth() + 1
  var day = dt.getDate()
  var h = dt.getHours() //获取时
  var m = dt.getMinutes() //获取分
  var s = dt.getSeconds() //获取秒
  if (mt < 10) {
    mt = '0' + mt
  }
  if (day < 10) {
    day = '0' + day
  }
  if (h < 10) {
    h = '0' + h
  }
  if (m < 10) {
    m = '0' + m
  }
  if (s < 10) {
    s = '0' + s
  }
  return y + '-' + mt + '-' + day + ' ' + h + ':' + m + ':' + s
}
app.post('/submit', (req, res) => {
  const data = req.body
  const user_name = data.name
  const email = data.email
  const message = data.message
  const create_time = initDate()
  console.log(create_time, 'create_time')
  connection.query(
    `insert into message_log (create_time, user_name, email,remark) values ('${create_time}','${user_name}','${email}','${message}');`,
    function (err, rows, fields) {
        console.log(err, rows, fields)
      if (err == null) {
        res.json({
          status: 200
        })
      } else {
        res.json({
          status: 500,
          err, rows, fields
        })
      }
    }
  )
})

// 启动服务器
app.listen(3000, () => {
  console.log('服务器已启动,监听端口3000')
})

文章来源:https://blog.csdn.net/weixin_46328739/article/details/135063309
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。