用node开发后端代码详解

8 篇文章 1 订阅

1、cnpm init
2、cnpm install express mysql cors body-parser
3、创建config.js文件,连接数据库

// 引入mysql中间件
const mysql=require('mysql')
// 创建连接
let connection=mysql.createConnection({
  host:"xxx.xx.xx.xx",  //数据库主机名
  user:"root",// user 用户名
  password:"123456", // 密码
  port: 3306,   //端口号
  database:"db_****"  // 所连接的数据库名称
})

//连接数据库
connection.connect();

在这里插入图片描述

4、创建http.js

//引入模块
const express=require('express');
const app=express();
const url=require('url')
const db=require('./config.js');
// 解决跨区域问题
// 导入中间件 cors
const cors = require('cors');
// 在路由之前调用app.use(cors())配置中间件
app.use(cors());
app.all("*",function(req,res,next){
 res.header("Acess-Control-Allow-Origin","*");
 next();
})
// 设置端口
app.listen(8888,function(){
  console.log('正在启动888....');
})

5、设置端口;在api文件夹终端打开 输入node http.js,测试是否设置成功
在这里插入图片描述

6、创建api目录index.js

//引入模块
const express = require('express');
const serve = require('../config.js');
const router = express.Router()
const mysql = require('mysql')
// 连接数据库
const conn = mysql.createConnection(serve.mysql)
conn.connect()
// 返回格式
const jsonWrite = function (res, ret, err) {
  if (err) return res.json({ code: -1, message: err.message })   // 返回错误
  if (typeof ret === 'undefined') {
    res.json({code: '-1',message: '操作失败'})
  } else {
    res.json({code: 1,data: ret,message: "success"})
  }
}
// 查询全部
router.get('/api/getData', (req, res) => {
  const sql = 'SELECT * FROM t_coach where status != 1';
  const params = req.query;
  conn.query(sql, params, (err, result) => {
    jsonWrite(res, result, err)
  })
})
// 查询详情
router.post('/api/getDetailsData', (req, res) => {
  const params = req.body;
  const sql = 'SELECT * FROM t_coach where c_id = ' + mysql.escape(params.c_id)
  conn.query(sql, (err, result) => {
    jsonWrite(res, result, err)
  })
})
// 添加
router.post('/api/addData', (req, res) => {
  const params = req.body;
  // const sql = 'INSERT INTO t_coach (c_name, c_level) values (' + mysql.escape([params.c_name, params.c_level]) + ")"
  const sql = 'INSERT INTO t_coach set ?' // 简易写法添加所有
  conn.query(sql, params,(err, result) => {
    jsonWrite(res, result, err)
  })

})
// 修改
router.post('/api/updateData', (req, res) => {
  const params = req.body;
  const sql = 'update t_coach set ? where c_id = ?'  // 简易写法根据查到的id进行修改数据
  conn.query(sql, [params, params.c_id], (err, result) => {
    jsonWrite(res, result, err)
  })
})
// 删除
router.post('/api/deleteData', (req, res) => {
  const params = req.body;
  // const sql = 'delete from t_coach where c_id =' + mysql.escape(params.c_id) //真删除有危险
  // 标记删除 status  执行删除的时候把该条数据的status 状态改为1,作为标记
  const sql ='update t_coach set status = 1 where c_id = ' + mysql.escape(params.c_id)
  conn.query(sql, (err, result) => {
    jsonWrite(res, result, err)
  })
})

7、安装jsonwebtoken 和express-jwt 进行验证 生成token
安装6.1.1的版本不会报expressJwt 错,但是要添加algorithms,使用 unless 放过一些不需要验证的接口

// 注册 JWT 字符串解析还原成 json 对象的中间件
const expressJwt = require('express-jwt')
const secretKey = 'iteheima No1 φ(* ̄0 ̄)' // 任意字节
app.use(expressJwt({ secret: secretKey, algorithms:['HS256'] }).unless({ path: ["/api/login"] }))

在登录接口中使用生成token

const jwt = require('jsonwebtoken')
// 为了保证 JWT 字符串的安全性,防止 JWT 字符串在网络传输过程中被别人破解,我们需要专门定义一个用于加密和解密 secret
// 当生成 JWT 字符的时候,需要使用secret密钥对用户的信息进行加密,最终得到加密好的 JWT 字符串
// 当把 JWT 字符申解析还原成JSON 对象的时候,需要使用secret密进行解密
router.post('/api/login', (req, res) => {
  const sql = 'SELECT * FROM user';
  const params = req.body;
  conn.query(sql, params, (err, result) => {
    const user = JSON.parse(JSON.stringify(result))[0]
    if (params.username == user.username && params.password == user.password) {
      // 登陆成功之后,调用jwt.sign()方法生成jwt 字符串,并通过token属性发送给客户端
      // 参数1: 用户的信息对象
      // 参数2: 加密的秘钥 
      // 参数3: 配置对象,可以配置当前 token 的有效期
      const tokenKey = jwt.sign({ username: user.username }, secretKey, { expiresIn: '300s' })
      res.json({code: 1,message: 'success',token: tokenKey})
    } else {
      res.json({code: -1,message: 'err'})
    }
  })
})

8、验证token失效

app.use((err,req,res,next) => {
  // token过期或者无效
  const token = req.headers.authorization
  jwt.verify(token, secretKey ,(error, decoded) => {
    if (error) {
      // console.log("token过期或者无效")
      res.json({
        code: -2,
        message: 'token过期或者无效'
      })
    }
  });
})

还有后续…

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 首先,你需要安装 Node.js。然后,你可以使用 JavaScript 编写后端代码。 举个例子,假设你想使用 Node.js 创建一个简单的 HTTP 服务器,你可以这样写: ``` const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); ``` 这段代码会创建一个 HTTP 服务器,并在本机的 3000 端口监听请求。当收到请求时,服务器会返回 "Hello World" 的文本。 这只是一个简单的例子,Node.js 可以用来做很多事情,比如操作数据库、创建 API 接口等。有关 Node.js 的更多信息,你可以参考官方文档:https://nodejs.org/en/docs/ ### 回答2: Node.js 是一种用 JavaScript 编写后端代码的运行环境。使用 Node.js 可以利用熟悉的 JavaScript 语言编写服务器端的应用程序。 在开始编写后端代码之前,首先需要安装 Node.js。安装完成后,可以使用 npmNode.js 包管理器)来安装所需的第三方库和模块。 编写后端代码的过程如下: 1. 创建项目文件夹:在任意位置创建一个用于存放后端代码的文件夹,并打开命令行窗口。 2. 初始化项目:在命令行中进入项目文件夹,然后运行 `npm init` 命令来初始化项目。根据提示输入相关信息,如项目名称、描述等。 3. 安装依赖:在命令行中运行 `npm install` 命令来安装项目所需的各种依赖模块。可以在 `package.json` 文件中记录和管理项目依赖。 4. 创建入口文件:在项目文件夹中创建一个入口文件,如 `index.js`。这个文件将会是后端代码的主要入口。 5. 编写后端代码:在 `index.js` 中使用 JavaScript 编写后端代码。可以使用 Node.js 提供的模块来实现各种功能,如操作文件系统、创建服务器、处理 HTTP 请求等。 6. 导出模块:在 `index.js` 文件中使用 `module.exports` 导出需要暴露出去的模块、函数或变量。 7. 运行代码:在命令行中使用 `node index.js` 命令来运行后端代码。根据代码的逻辑,可以监听端口、提供 API 接口等。 通过以上步骤,就可以使用 Node.js 编写后端代码了。可以使用各种框架(如 Express、Koa)来简化开发过程、提供更多功能。编写后端代码时,需要注意处理异步操作和错误处理,以及保证代码的安全性和性能。编写好的后端代码可以部署到服务器上运行,通过接口提供服务,与前端进行数据交互。 ### 回答3: Node.js 是一种非常流行的后端开发框架,可以使用 JavaScript 语言编写后端代码。以下是使用 Node.js 编写后端代码的一般步骤: 1. 安装 Node.js:首先需要在计算机上安装 Node.js,可以从官方网站下载并按照指示安装。 2. 创建项目:使用命令行工具在适当的目录下创建一个新项目文件夹,并进入该文件夹。 3. 初始化项目:在命令行中运行 `npm init` 命令来初始化项目,这将生成一个 `package.json` 文件,其中包含项目的基本信息和依赖项。 4. 安装依赖项:根据项目的需求,使用 `npm install` 命令安装所需要的依赖项。依赖项可以是框架、库或其他模块。 5. 创建后端代码文件:在项目文件夹中创建一个后端代码文件,可以命名为 `server.js`。 6. 引入依赖项和模块:在 `server.js` 文件中使用 `require` 引入所需要的依赖项和模块,例如 `express` 框架。 7. 创建 Express 实例:使用 `express` 框架创建一个 Express 应用实例,并进行相应的配置。 8. 编写路由和处理程序:在 `server.js` 文件中编写路由,为不同的 HTTP 请求路径指定对应的处理程序。处理程序可以是一个函数,用于处理请求和返回响应。 9. 启动服务器:在 `server.js` 文件中使用 `app.listen` 方法指定服务器监听的端口号,并启动服务器。 10. 测试代码:在命令行中运行 `node server.js` 命令启动服务器,并使用浏览器或其他工具发送请求来测试后端代码的功能和效果。 在编写后端代码时,还可以使用各种持久化存储方案、安全机制和中间件来实现更复杂的功能和需求。Node.js 提供了丰富的库和模块,可以方便地进行后端开发。同时,Node.js 也支持异步编程,使得处理高并发请求成为可能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值