接口(二阶段)

本文介绍了如何使用Express生成项目,设置数据库连接,以及编写CRUD操作的基础步骤。涉及的关键技术包括npx命令行工具,mysql模块,以及app.js和路由文件的配置。此外,还提到了错误处理和API接口测试。
摘要由CSDN通过智能技术生成

1.首先搭建脚手架

生成项目

npx express-generator

npx会临时安装一个包,使用完会自动卸载

npm install

会安装package.json中记录的的依赖包

npm i mysql

启动本地服务器

npm start

注意:前提电脑上要有Express

expreess官网:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

2.然后要写一个connection.js在文件目录下面

注意:用脚手架生成项目之后没有connection.js,需要自己写一个

例如 

connection.js文件内容

// 引入mysql模块(控制台npm install mysql如果没有的话需要提前安装)
const mysql = require('mysql')
// 创建连接对象
const connection = mysql.createConnection({
  host: '127.0.0.1',
  port: '3306',
  user: 'root',
  password: '',
  database: 'hem', //要进入的数据库
  multipleStatements: true //开启一次执行多个SQL命令
})
// 暴露连接对象
module.exports = connection

3.修改app.js

命令输入完自己生成的app.js中里面有很多没有的代码,直接复制下面的代码就可以

var express = require('express');
var path = require('path');
var logger = require('morgan'); //日志
const cors = require('cors'); // 跨域模块



//

//内容
// 例如:const userRouter = require('./routes/user')





/
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//记录日志
app.use(logger('dev'));
//将post传参过程中的json转为对象
app.use(express.json());
//将post传参转为对象
app.use(express.urlencoded({
	extended: true
}));
//托管静态资源
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors())

///

//内容
//例如:app.use('/v1/user', userRouter);












///

// 错误处理中间件
app.use(function(err, req, res, next) {
	//打印错误信息
	console.log(err)
	res.send({
		code: 500,
		msg: '服务器端错误'
	})
});
module.exports = app;

注意:里面引入了cors跨域模块,需要下载

npm i cors

下面是举例子

routes/user.js

get,post,update,delete

// 引入express模块
const express = require('express');
// 创建路由器对象
const connection = require('../connection')
// 添加路由
const router = express.Router()

//路由  get获取
router.get('/get', (req, res, next) => {
  //执行sql命令
  connection.query('select * from user', (err, r) => {
    if (err) {
      return next(err)
    }
    res.send({
      code: 200,
      msg: '患者详情',
      data: r
    })
  })
})

// 添加(post /add)
router.post('/add', (req, res, next) => {
  // 获取post传递的参数
  var obj = req.body
  console.log(obj)
  // 执行SQL命令,将数据插入到数据库
  connection.query('insert into user set ?', [obj], (err, r) => {
    if (err) {
      return next(err)
    }
    console.log(r)
    res.send({ code: 200, msg: '添加成功' })
  })
})
/
// 删除(delete /del)
router.delete('/del', (req, res, next) => {
  // 获取get传递参数
  var obj = req.query
  console.log(obj)
  // 执行SQL命令
  connection.query('delete from user where id=?', [obj.id], (err, r) => {
    if (err) {
      return next(err)
    }
    console.log(r)
    // 如果对象下的affectedRows值为0说明删除失败,否则就是删除成功
    if (r.affectedRows === 0) {
      res.send({ code: 400, msg: '删除失败' })
    } else {
      res.send({ code: 200, msg: '删除成功' })
    }
  })
})
/
// 修改(put /update)
router.put('/update', (req, res, next) => {
  // 获取post传递的参数
  var obj = req.body
  console.log(obj)
  // 执行SQL命令,修改数据
  connection.query('update user set ? where id=?', [obj, obj.id], (err, r) => {
    if (err) {
      return next(err)
    }
    console.log(r)
    // 如果对象下changedRows值为0说明修改失败,否则修改成功
    if (r.changedRows === 0) {
      res.send({ code: 400, msg: '修改失败' })
    } else {
      res.send({ code: 200, msg: '修改成功' })
    }
  })
})

// 暴露路由器对象
module.exports = router

项目文件目录下的app.js

var express = require('express');
var path = require('path');
var logger = require('morgan'); //日志
const cors = require('cors'); // 跨域模块



//
const userRouter = require('./routes/user')
const companyRouter = require('./routes/company')







/
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//记录日志
app.use(logger('dev'));
//将post传参过程中的json转为对象
app.use(express.json());
//将post传参转为对象
app.use(express.urlencoded({
  extended: true
}));
//托管静态资源
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors())

///
app.use('/v1/user', userRouter);
app.use('/v1/company', companyRouter);
















///

// 错误处理中间件
app.use(function (err, req, res, next) {
  //打印错误信息
  console.log(err)
  res.send({
    code: 500,
    msg: '服务器端错误'
  })
});
module.exports = app;

ApiPost上面的接口测试

get

 post

 delete

 update

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值