资讯专栏INFORMATION COLUMN

数据接口(API)开发须知

piglei / 944人阅读

摘要:由服务端生成在请求任何接口之前,都必须先请求一个获取服务器生成的的接口,获取之后,才请求其他接口是请求时间型号设备号系统类型加密加密头部存储基本参数加密校验参数必须填必须填以下为选填,可有可无,任由开发者自己定义类型设备号版本型号

传统API与RESTful API

传统API

获取用户信息  get   /api/user/read
更新用户信息  post  /api/user/update
新增用户信息  post  /api/user/add
删除用户信息  post  /api/user/delete

Restful API

获取用户信息  get     /api/user/1
更新用户信息  put     /api/user/1
新增用户信息  post    /api/user
删除用户信息  delete  /api/user/1

区别

相同:数据一般以json或xml格式返回
不同:
Restful API:操作的是资源;增删改查对应http动词
传统API :   只有get/post动词;
HTTP状态码

注意:API接口返回的 JSON数据 中包含的是业务状态码,并非HTTP状态码


2XX系列

200 请求成功(作用于GET方式)
201 创建成功(作用于POST方式)
204 更新/删除成功(作用于PUT/Delete方式)

4XX系列

400 无效请求(参数错误或不合法)
401 缺少用户认证参数,比如说,请求的时候没有带上 Token 等。
403 没有权限
404 请求资源不存在
405 请求方法(get/post/put/delete)不允许使用

5XX系列

500 服务器内部错误(泛用,无需区分具体错误)
501 功能没有实现
API数据结构

返回的JSON数据结构 必须由团队统一约定,一般必须包含3项:业务状态码、消息、数据

//API 返回数据结构如下
{
    "status": 0,
    "msg": "OK",
    "result": []
}

封装一个方法格式化通用API接口数据结构

function formatDataByJson($status, $msg, $data=[], $httpCode=200){

    $result = [
        "status" => $status,
        "msg" => $msg,
        "data" => $data
    ];

    return json($result, $httpCode);
}
API异常处理 API数据安全

安全问题

黑客通常有2种手法获取数据:
1、抓包
2、反编译

1、请求地址、头部参数、体部数据暴露(利用加密、有效时间、唯一性解决)
2、返回数据明文暴露(可通过加密解决)
3、担心反编译(使用防反编译工具打包)
4、XSS脚本跨站攻击

根据安全问题,有2种生成Token方式

由客户端生成Token

客户端工程师和服务器端工程师约定好规则,客户端工程师把约定好规则的加密Token传给服务器端,服务器端再按照约定好规则解密就好。

由服务端生成Token

在请求任何API接口之前,都必须先请求一个获取服务器生成的Token的API接口,获取Token之后,才请求其他API接口

Token是 请求时间+型号+设备号+系统类型 加密(aes加密)

HTTP头部存储基本参数

1、token(加密校验参数)必须填
2、content-type (application/json) 必须填
---------------------以下为选填,可有可无,任由开发者自己定义
3、app-type (app类型:android/ios/pc)
4、did  (设备号)
5、version  (版本)
6、model  (型号)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26158.html

相关文章

  • Vert.x入坑须知(1)

    摘要:轻量级,部署简单。此外,本文也不是入门文档,而是为了预防陷坑而给出的指导意见,故在阅读本文之前还请先仔细阅读的文档。可视作的一个最小部署和运行单元,简单的说,可类比为。,主,负责部署程序中其他的。严格来讲,之后,上述第一点并不完全正确。 一直以来早有将这些年用Vert.x的经验整理一下的想法,奈何天生不是勤快人,直到最近扶墙老师问起,遂成此文。 选择理由 现在想想,我们应该算是国内用V...

    Turbo 评论0 收藏0
  • 【容器云 UK8S】产品简介:产品概念、使用须知与名词解释

    摘要:产品概念是一项基于的容器管理服务,你可以在上部署管理扩展你的容器化应用,而无需关心集群自身的搭建及维护等运维类工作。完全兼容原生的,以私有网络为基础,并整合了等云产品。其命名规范为。产品概念UCloud Container Service for Kubernetes (UK8S)是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kub...

    Tecode 评论0 收藏0
  • Vert.x入坑须知(4)

    摘要:主要是避免引入太多的复杂性,并且出于灵活部署的需要。以应用为例,由于实际上是在上执行,若它被阻塞,即导致后续请求全部无法得到处理。因此,最合适的做法就是对于简单业务,采用异步库。本系列其他文章入坑须知入坑须知入坑须知 最开始觉得这个系列也就最多3篇了不起了(因为事不过三嘛),没曾想居然迎来了第四篇! Kotlin 由于最近决定投身到区块链的学习当中的缘故,出于更好的理解它的基本概念,自...

    summerpxy 评论0 收藏0
  • 工具推荐丨推荐又拍云web版API管理工具,一款辅助使用又拍云的轻量工具

    摘要:没想到会找到其他开发者针对又拍云开发又拍云管理工具这样的工具,我个人觉得也算是又拍云在接口方面比较开放的一个的案例吧。 今年上半年,我通过又拍云搭建了一个独立博客,不久之后就遇到了很多实际问题:网上看到图片想收藏到空间,YouTube上的MV想放到自己的博客,想对一段音视频进行在线预览和编辑……当时我查了下,必须要通过API接口编写一段程序才能完成(不是程序猿,搭建独立博客已经要了我半...

    adam1q84 评论0 收藏0
  • 石家庄生育健康服务平台项目

    摘要:生育健康平台算是我做过的比较完整,也比较大的一个项目了。首先,主要做的还是写前台,因为后台我们这里用原来的项目的接口即可。孕前保健孕期保健儿童保健生殖健康就是通过在标签下放好类,然后在点击时切换类然后调接口拼接页面想要的内容。 生育健康平台算是我做过的比较完整,也比较大的一个项目了。现在想记录一下,总结一下做的过程,遇到的难点。 首先,主要做的还是写前台,因为后台我们这里用原来的项目...

    springDevBird 评论0 收藏0

发表评论

0条评论

piglei

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<