Node编写获取用户信息接口

目录

前言

初始化路由模块

使用postman发送get获取用户信息请求

初始化路由处理函数模块

获取用户基本信息


前言

在前两篇文章中已经介绍了如何编写用户注册接口以及用户登录接口,这篇文章介绍如何获取用户信息,本篇文章建立在Node编写用户登录接口和Node编写用户注册接口

初始化路由模块

javascript 复制代码
// 导入 express
const express = require('express')
// 创建路由对象
const router = express.Router()

// 获取用户的基本信息
router.get('/userinfo', (req, res) => {
  res.send('ok')
})

// 向外共享路由对象
module.exports = router

在服务器中导入并使用该模块

javascript 复制代码
// 导入并使用用户信息路由模块
const userinfoRouter = require('./router/userinfo')
// 注意:以 /my 开头的接口,都是有权限的接口,需要进行 Token 身份认证
app.use('/my', userinfoRouter)

使用postman发送get获取用户信息请求

显示身份认证失败,这是因为需要进行token身份认证

需要在headers中添加请求头authorization,并且加上在登录时生成的token值

获取到了token

初始化路由处理函数模块

创建 /router_handler/userinfo.js 路由处理函数模块

javascript 复制代码
//获取用户信息的处理函数
exports.getUserinfo = (req,res)=>{
    res.send('获取用户信息成功')
}

将get请求接口修改为

javascript 复制代码
router.get('/userinfo',userinfo_handler.getUserinfo)

postman验证是否可用

获取用户基本信息

在路由处理函数模块,导入数据库模块

javascript 复制代码
// 导入数据库模块
const db = require('../../db/index')

定义sql语句,根据用户id查询用户信息,需剔除用户密码

javascript 复制代码
// 根据用户的 id,查询用户的基本信息
// 注意:为了防止用户的密码泄露,需要排除 password 字段
const sql = `select id, username, nickname, email, user_pic from ev_users where id=?`

调用db.query()方法使用sql语句

javascript 复制代码
// 注意:req 对象上的 user 属性,是 Token 解析成功,express-jwt 中间件帮我们挂载上去的
db.query(sql, req.auth.id, (err, results) => {
  // 1. 执行 SQL 语句失败
  if (err) return res.cc(err)

  // 2. 执行 SQL 语句成功,但是查询到的数据条数不等于 1
  if (results.length !== 1) return res.cc('获取用户信息失败!')

  // 3. 将用户信息响应给客户端
  res.send({
    status: 0,
    message: '获取用户基本信息成功!',
    data: results[0],
  })
})

完整请求获取用户信息代码

javascript 复制代码
exports.getUserinfo = (req,res)=>{
    // 定义sql语句,根据id
    const sql = 'select id,username,nickname,email,user_pic from ev_users where id =?'
    db.query(sql,req.auth.id,(err,results)=>{
        // 判断sql语句是否执行成功
        if(err) return res.send({status:0,message:err.message})
        // 判断查询到的数据是否为1
        if(results.length!==1) return res.send({status:0,message:'获取用户信息失败'})
        // 向客户端发送用户信息
        res.send({
            status:0,
            message:'获取用户信息成功',
            data:results[0]
        })
    })
    
}

使用postman发送请求

获取成功

相关推荐
福兮说10 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理11 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆66612 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)12 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan12 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_13 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒13 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技13 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu14 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
niyongsheng15 小时前
后端零改动,给若依换一套现代化前端
vue.js·开源·node.js