我的编程空间,编程开发者的网络收藏夹
学习永远不晚

API接口TOKEN设计

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

API接口TOKEN设计

API接口TOKEN设计

首先需要知道API是什么?

API(Application Programming Interface)即应用程序接口。你可以认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而我们在这里要谈论的,是作为一家公司如何跟外界进行交互。从另一个角度来说,API 是一套协议,规定了我们与外界的沟通方式:如何发送请求和接收响应。

API的特点:

因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效;

因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程;

接口分为需要用户登录才能访问的和不需要用户登录就可访问的;

针对以上特点,移动端与服务端的通信就需要两种不同的TOKEN,一种针对接口的api_token,一种针对用户的user_token;

一.api_token

它的职责是保持接口访问的隐蔽性和有效性,保证接口只有可信任的来源才可以访问,参考思路如下: 按服务器端和客户端(接口调用)都拥有的共同属性生成一个随机串,客户端生成这个串,服务器也按同样算法生成一个串,用来校验客户端的串。 现在的接口基本是mvc模式,URL基本是restful风格,URL大体格式如下: http://www.api.com/模块名/控制器名/方法名?参数名1=参数值1&参数名2=参数值2 接口token生成规则参考如下: $api_token = md5 ('模块名' + '控制器名' + '方法名' + '2018-1-18' + '加密密钥') = 789fed3842aabd834e9a5dd7735532de2 1.'2018-1-18' 为当天时间 2.'加密密钥'为私有的加密密钥,手机端需要在服务端注册一个“接口使用者”账号后,系统会分配一个账号及密码,数据表设计参考如下: 字段名及字段类型 client_id varchar(20) 客户端ID client_secret varchar(20) 客户端(加密)密钥 服务端接口校验,PHP实现流程如下:

二.user_token

它的职责是保护用户的用户名及密码多次提交,以防密码泄露。 如果接口需要用户登录,其访问流程如下:

用户提交“用户名”和“密码”,实现登录(条件允许,这一步最好走https);

登录成功后,服务端返回一个user_token,生成规则参考如下: user_token = md5('用户的uid' + 'Unix时间戳') = etye0fgkgk4ca2ttdsl0ae9a5dd77471fgf 服务端用数据表维护user_token的状态,表设计如下: 字段名及字段类型如下: user_id int(11) 用户ID user_token varchar(36) 用户token expire_time int 过期时间(Unix时间戳) 服务端生成user_token后,返回给客户端(自己存储),客户端每次接口请求时,如果接口需要用户登录才能访问,则需要把 user_id与user_token传回给服务端,服务端接受到这2个参数后,

需要做以下几步:

检测user_token的有效性;

删除过期的user_token表记录;

根据user_id,user_token 获取表记录,如果表记录不存在,直接返回错误,如果记录存在,则进行下一步;

更新user_token 的过期时间(延期,保证其有效期内连续操作不掉线);

返回接口数据; 接口用例如下:添加测试接口

请求方式: POST POST参数:title=哈喽&content=我的世界 返回数据: { 'code' => 1, // 1:成功 0:失败 'msg' => '成功/失败,无权访问' 'data' => [] }

来源地址:https://blog.csdn.net/TinagirlAPI/article/details/130539179

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

API接口TOKEN设计

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

设计API接口时要注意什么

这篇文章主要介绍了设计API接口时要注意什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇设计API接口时要注意什么文章都会有所收获,下面我们一起来看看吧。1. 签名为了防止API接口中的数据被篡改,很多时候我
2023-07-05

PHP接口性能优化之API设计原则(如何通过合理的API设计提升PHP接口性能?)

PHP接口性能优化之API设计原则:选择适当的HTTP方法,使用JSON/XML格式,压缩数据。使用缓存机制,优化数据库查询。并发处理请求,使用分层API,限制请求速率。使用监控工具,进行性能分析,并根据测试结果调整API设计。
PHP接口性能优化之API设计原则(如何通过合理的API设计提升PHP接口性能?)
2024-04-02

.net core api接口如何实现JWT方式认证Token

这篇文章主要介绍.net core api接口如何实现JWT方式认证Token,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、项目>管理Nuget包 安装二、.appsettings.json添加"JWT": {
2023-06-22

设计和实现CI/CD管道的PHP API接口

随着 Web 技术的不断发展,越来越多的开发人员开始采用 CI/CD 工具链来加快和简化代码交付和部署的流程。而 PHP 作为最常用的 Web 开发语言之一,也需要采用 CI/CD 工具链来提高开发效率和提升代码质量。本文将介绍如何使用 P
设计和实现CI/CD管道的PHP API接口
2024-01-22

比较Web API与传统API的接口设计与应用场景

Web API vs. 传统API: 比较不同类型的接口设计与应用场景引言:在软件开发中,应用程序接口(API)在不同的应用场景中扮演着重要的角色。随着Web应用的兴起,Web API作为一种新型的接口设计方式,与传统API相比有着许多显著
比较Web API与传统API的接口设计与应用场景
2023-12-23

架构设计 | 接口幂等性原则,防重复提交Token管理

本文源码:GitHub·点这里 || GitEE·点这里一、幂等性概念1、幂等简介编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。就是说,一次和多次请求某一个资源会产生同样的作用影响。2、HTTP请求遵循Htt
2023-06-02

如何设计API接口实现统一格式返回

这篇文章给大家介绍如何设计API接口实现统一格式返回,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职
2023-06-05

PHP开发中如何优化API开发和接口设计

在当今互联网快速发展的时代,API(Application Programming Interface)成为了各种应用程序之间进行数据交互的重要方式。作为PHP开发人员,在开发API时,不仅需要保证接口的功能正常运行,还需要考虑如何优化AP
2023-10-21

C#开发经验分享:设计良好的API与接口

C#开发经验分享:设计良好的API与接口引言:随着软件开发技术的进步和发展,API(Application Programming Interface)和接口(Interface)的设计在软件开发中起到了至关重要的作用。一个好的API和接口
C#开发经验分享:设计良好的API与接口
2023-11-22

怎么设计一个看起来很厉害的API接口

本篇内容介绍了“怎么设计一个看起来很厉害的API接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一 安全性问题安全性问题是一个接口必须要保
2023-06-27

python接口自动化-token登录

前言有些登录不是用cookie来验证的,是用token参数来判断是否登录。token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已;另外一种是在url请求参数里,这种更直观。 一、登录返回token1.如下图
2023-01-31

Spring Security请求oauth/token接口报401 Unauthorized

背景 项目spring-security+oauth2 版本是5.7.6 项目以client的形式请求TokenEndPoint中的/oauth/token,使用Basic认证调用接口,返回token 问题描述 先前是可以登录访问,更新代码
2023-08-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录