node.js 搭建简单后端项目,express中使用POST,调用外部API,连接数据库

1、创建目录并初始化

mkdir node-server && cd node-server && npm init -y

2、安装express

npm install express --save

3、安装body-parser (express中使用POST)

npm install body-parser

4、安装axios (express 调用外部api)

npm install axios

5、新建index.js

const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const router = require('./router')//引用模块 
// parse application/x-www-form-urlencoded
//配置模板引擎body-parser一定要在app.use(router)挂载路由之前
app.use(bodyParser.urlencoded({extended: false}))
// parse application/json
app.use(bodyParser.json())
// 全局 中间件  解决所有路由的 跨域问题
app.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*')
    res.header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type')
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT')
    res.header('Access-Control-Allow-Credentials', true);
    res.header("Content-Type", "application/json;charset=utf-8");
    next()
})
app.use(router)

app.listen(3033, function () {
    console.log("中间服务已启动!监听端口3033")
})

6、新建router.js 对请求的处理,express中使用POST/请求外部接口

//创建路由
const {Router} = require('express')
const router = new Router()
const axios = require("axios")

const api = 'http://192.168.1.116:8000/api/'

router.post('/inrecognition', (request, response) => { //处理post请求
    let obj = {
        deviceId: request.body.deviceId,
        deviceName: request.body.deviceName,
    }
    axios.post(api + 'inrecognition', obj) //请求外部接口
        .then((res) => {
            response.send(res.data)
        })
        .catch((error) => {
            console.error(error)
            response.send(error)
        })
})

module.exports = router

7、启动项目

node index.js

或在package.json scripts 添加启动项
在这里插入图片描述
添加 "start": "node ./index.js" 后可通过 npm run startnpm start 启动项目

8、项目启动后台持续运行,使用pm2

全局安装pm2

npm install pm2 -g

启动 (也可配置到package.json中)

pm2 start index.js

9、连接mysql数据库

下载mysql依赖

npm install mysql

新建 mysql.js 连接数据库

const mysql = require("mysql")
const Dbs = {
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'mydb'
}
const connection = mysql.createConnection(Dbs)

connection.connect()
// //查询
// connection.query(`sql`, (err, rows, fields) => {
//     if (err) throw err
//     console.log(rows)
// })
//
//
// connection.end()
module.exports = connection

在需要调用的文件中引入使用,如在router.js引入

const mysql = require('./mysql')

调用

router.get('/getsomething', (req, res) => {
    mysql.query(`select * from deviceinfo limit 3`, (err, rows, fields) => {
        if (err) throw err
        res.send(rows)
    })
})

10、其他

其它Node.js连接数据库方法参考 https://www.cnblogs.com/joyo-w/p/10660952.html

express中文文档:https://express.nodejs.cn/

拓展:KOAJS https://koa.bootcss.com/

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
后端文件上传的api可以使用Node.jsExpress框架实现,具体代码如下: ```javascript const express = require('express'); const multer = require('multer'); const app = express(); // 设置上传文件的存储路径和文件名 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/'); }, filename: function (req, file, cb) { cb(null, Date.now() + '-' + file.originalname); } }); // 创建multer实例 const upload = multer({ storage: storage }); // 定义上传文件的路由 app.post('/upload', upload.single('file'), (req, res) => { console.log(req.file); res.send('文件上传成功!'); }); // 启动服务 app.listen(3000, () => { console.log('服务已启动,http://localhost:3000'); }); ``` 在vue项目api文件夹下,创建uploadfile.js文件,实现文件上传的api调用: ```javascript import axios from 'axios'; const baseUrl = 'http://localhost:3000'; export function uploadFile(file) { const formData = new FormData(); formData.append('file', file); return axios.post(`${baseUrl}/upload`, formData); } ``` 在vue项目的views文件夹下,创建uploadfile.vue文件,实现文件上传的功能: ```html <template> <div> <input type="file" @change="handleFileChange"> <button @click="handleUpload">上传文件</button> </div> </template> <script> import { uploadFile } from '@/api/uploadfile'; export default { data() { return { selectedFile: null }; }, methods: { handleFileChange(event) { this.selectedFile = event.target.files[0]; }, handleUpload() { if (!this.selectedFile) { alert('请选择文件!'); return; } uploadFile(this.selectedFile) .then(response => { console.log(response.data); alert('文件上传成功!'); }) .catch(error => { console.log(error); alert('文件上传失败!'); }); } } }; </script> ``` 在uploadfile.vue文件,首先创建一个文件选择框,当用户选择文件后,将选的文件保存在selectedFile变量。然后点击“上传文件”按钮,调用uploadFile函数,将选的文件作为参数传递给它。uploadFile函数会发送POST请求后端的文件上传api,上传成功后返回一个成功的提示信息。如果上传失败,则返回一个错误信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值