nodejs学习十:路由及方法

  1. 新建node项目文件夹,并在内创建src文件夹,用于存放接口文件

  2. 在src文件夹下创建app.js,并输入以下内容:

const express = require('express')
const app = express()
// 跨域处理
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1')
    if(req.method=="OPTIONS") res.send('200');/*让options请求快速返回*/
    else  next();
});


app.listen(3000, () => {
  console.log('服务器开启127.0.0.1:3000')
})

app.js文件就是主路由所在,代码中可以看出,接口的方法有以下几种

PUT:一般用于更新
POST:body传参
GET:query传参
DELETE:删除
OPTIONS:预检,跨域时一般会先发送这类请求,然后再请求其他类型的接口

其中,为了解决body传参需要引入一个组件body-parser解决
安装body-parser:npm install --save body-parser
配置body-parser,在app.js中:

const express = require('express')
const bodyParser = require('body-parser') // 引入body-parser
const app = express()
// 跨域处理
//...
// 处理body传参
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
// ...
	

这个时候我们就可以在app.js中写我们的接口了,如:

...
const models = require('../../models') // 模型对象
const outputFormat = require('./outputFormat') // 统一出口
app.post('/login', async (req, res) => {
  let { account,password } = req.body; // 因为是post请求,所以参数默认都在body里面,当然也可以指定在query里面
  if (account === '' || password === '') { // 不能为空,一般前端会处理此项,后端也判断,双层保险
    outputFormat(res,'', '账号或密码不能为空!', 101) // outputFormat函数是我自己写的一个统一的返回函数,为了保证格式的一致性,下面补出outputFormat文件内容,应该有更好的方法。
    return
  }
  let data = await models.manager.findOne({ // 这里使用的是Sequelize模型来查询数据库,
    where: {
      account,
      password
    },
  })
  if (data) {// 登录成功
  	// ...缓存啊,token啊啥的
    outputFormat(res,token)
  } else {
    outputFormat(res,'', '账号或密码错误!', 101)
  }
  
})

outputFormat.js代码

/** 
 * 输出的数据格式化
 * {
 *  code:提示代码
 *  data:数据
 *  msg:提示信息
 * }
 * code: 
 * 0:成功,
 * 1:失败,无任何前端提示,
 * 101:失败,前端需toast提示,
 * 202:失败,前端需console控制台打印,
 * 10086:登录失效,提示重新登录
*/

module.exports = (res,data,msg = 'success',code = 0) => {
  res.json({
    code,
    data,
    msg
  })
}

在前端页面调用接口:(本地)http://127.0.0.1:3000/login

以上便能创建接口并且使用接口,但是在日常开发中,不可能将所有的接口都写在app.js里面,此时我们就需要将接口代码分开,根据每个模块建立一个接口js文件:
如新建loginAbout.js文件,处理用户的登录,注册,退出登录等

// loginAbout.js
const express = require('express')
const router = express.Router() // 创建子路由router
...
// 登录
router.post('/login', async (req, res) => {
	let { account,password } = req.body;
  ...
})
module.exports = router

然后在主路由app.js中注册子路由

// app.js
// 子路由
const login = require('./loginAbout')
app.use(login)
// 此时页面上请求的接口路径为:http://127.0.0.1:3000/login

我们还可以在注册子路由的时候添加其他的信息:

// app.js
// 子路由
const login = require('./loginAbout')
app.use('/user',login)
// 此时页面上请求的接口路径就变为:http://127.0.0.1:3000/user/login

本地开发调试的时候需要启动nodejs,需安装nodemon
npm install --save-d nodemon
启动:nodemon src/app.js
也可以配置成vue类似的启动命令,首先在package.json中的scripts添加以下代码

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon src/app.js" // 添加此行
  },

然后使用命令:npm run dev启动nodejs

完。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mosowe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值