接口开发规范(RESTful api)和token(令牌),md5使用

目录

优点:

常用方法规范

路由如何定义

根据RESTful 进行接口开发

接口文档组成

Token使用

什么是JWT? 【了解】

 token的使用规则

本地客户端(浏览器是常见客户之一 )存储技术有三种:【重点】

使用步骤

uuid和md5


API: API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。

RESTful规范,是目前一种比较流行的互联网软件设计规范。

这个规范约束的就是路由地址应该如何定义,返回的json接口数据应该如何规范

RESTful API 【重点】:是指在我们设计路由时同一个资源(比如:用户、成绩等)使用同一个路径(比如:/user、/chengji等),然后通过不同的请求方式(比如:get、post、put、delete)来区分不同的操作。

优点:

使开发者在进行独立开发或协作开发更能标准,以达到行业的统一。它结构清晰、符合标准、易于理解、扩展方便,越来越多的开发者遵守这种规范。

常用方法规范

(1)GET:SELECT 获取(查询)资源

(2)POST:CREATE 创建(添加)资源

(3)PUT:UPDATE 更新(修改)资源

(4)DELETE:DELETE 删除资源

路由如何定义

路径 请求方式 参数 备注
/user get id:用户id(可为空)、uname:姓名(可为空) 查询用户
/user post uname:姓名、age:年龄、sex:性别 添加用户
/user put id:用户id(不能为空 )、uname:姓名、age:年龄、sex:性别 修改用户
/user delete id:用户id(不能为空 ) 删除用户

根据RESTful 进行接口开发

(1)使用express脚手架生成接口项目 express --view=ejs myapp

(2)进入myapp目录 安装依赖 npm install

(3)创建student.js到routes目录中

(4)定义模块化路由代码

(5)在入口文件app.js中引入路由

(6)启动项目

接口文档组成

(1)、接口地址:http://localhost:3000/mycourse

(2)、请求方式:get

(3)、请求参数:

jwtdata jwt数据 必填

(4)、返回数据(json)

参数名称 参数类型 是否必填 备注
username 字符串 帐号
password 字符串 密码
repassword 字符串 确认密码
键名 数据类型 默认值 备注
satus 整数: 200/500 状态值 200表示成功 500表示失败
msg 字符串 提示信息
data 数组 空数组 返回的数据

Token使用

token(令牌)介绍

token(令牌)技术通常用于在不同服务器之间来校验用户身份信息,如果用户身份信息校验通过则可以执行后续操作,否则不能执行,而JWT是常见token(令牌)技术之一。

什么是JWT? 【了解】

Json web token (JWT),JWT由A.B.C三部分组成,格式为:A.B.C

A: header(头部),格式如: {typ:'jwt',alg:'加密算法'}

B: payload(有效载荷),用来存放用户自定义的数据,格式:{uname:'登录成功的用户名',uid:'登录成功的用户ID'}

C: signature(签名),用来校验JWT数据是否真实有效 signature(签名)=加密算法(加密算法(A).加密算法(B))

 token的使用规则

主要应用于登录加密,以后客户端和服务器通信的时候,特别是需要验证用户身份时,都需要携带这个token给服务器端,一般由请求头Authorization,来把这个字段传给服务器端,以保证后续一些需要登录权限的操作能够顺利进行。

本地客户端(浏览器是常见客户之一 )存储技术有三种:【重点】

1)、cookie的特点: 有大小及存储个数限制、cookie还可以被禁用,默认有效时间为整个有效会话期间,但可以设置有效时间;

2)、Local Storage的特点:没有大小及存储个数的限制,默认永久有效,不能设置有效时间;

3)、Session Storage:没有大小及存储个数据的限制,默认有效时间为个整个有效会话期间,不能设置有效时间;

使用步骤

(1) 安装jsonwebtoken

在项目根目录中安装jsonwebtoken: npm i jsonwebtoken

npm i  jsonwebtoken 

2.引用

const jwt=requir("jsonwebtoken")

3. 设置要加密的数据

4. 加密已知的数据   

生成JWT数据、把源数据进行加密返回token

语法:jwt.sign('用户自定义的数据','密钥',选项);

5.验证token是否过期     

使用JWT数据,验证token是否有效

jwt.verify( ‘JWT数据’,'密钥')

6.token的模块化

const jsonwebToken = require('jsonwebtoken');

let tokenKeys = 'sfdafds^%$#$#86452'; //密钥

//生成JWT数据:
exports.createJWT = function(data) {
    // jsonwebToken.sign('用户自定义的数据','密钥',选项);
    //expiresIn:jwt数据的有效时间,时间单位为:秒
    return jsonwebToken.sign(data, tokenKeys, { expiresIn: 60 * 60 * 2 });
}


//使用JWT数据:
exports.useJWT = function(d) {
    try {
        // jsonwebToken.verify('JWT数据','密钥');
        let jwtData = jsonwebToken.verify(d, tokenKeys);
        if (jwtData) {
            return jwtData;
        } else {
            return false;
        }
    } catch (error) {
        return false;
    }
}
  if (jwtData == '') {
        res.send(Msg(500, '非法访问,请先登录'));

      }
      //使用jwt数据
      let jwtObj = useJWT(jwtData);
      // console.log(jwtObj, 7);
      if (!jwtObj) {
        res.send(Msg(500, '非法访问,请先登录!!'));

      }

 

 //获取Local Storage中存放的JWT数据:
            let userJwtData = localStorage.ujwtdata ? localStorage.ujwtdata : '';
            console.log(userJwtData);

uuid和md5

注意:在项目根目录下安装md5、uuid包: npm i uuid md5

uuid第三方模块:主要用来产生唯一的字符串:

md5第三方模块:使用md5加密算法加密字符串

什么是md5?【重点】

md5是一种加密算法,使用md5加密算法加密后字符串长度是固定的32位、且不可逆;

md5是一个加密方法,可以把任意字符串进行加密,但是每次加密同一个字符串返回的值都是一样的,所以往往会加一个密钥进行加密以防止别人偷窃,常常用于加密用户的密码。 

var md5 = require('md5'); //使用md5模块中md5方法进行加密
const {
  v4: uuidv4
} = require('uuid'); //使用uuid模块中方法产生唯一字符串

 

你可能感兴趣的:(服务端开发,前端,restful,后端)