Jasper:API / 后向兼容性
| ylbtech-Jasper:API / 后向兼容性 |
| 1.返回顶部 |
后向兼容性
为了给客户提供创新的业务解决方案,Cisco Jasper 会定期扩展我们 API 框架的功能。我们会尽最大努力确保大多数 API 变更都可以后向兼容,使您无需在我们每次更改框架之后更新您的代码。后向兼容的变更包括:
- 向 API 服务添加 API 接口
- 向 API 接口添加方法
- 向方法添加 HTTP 绑定
- 向请求消息添加字段
- 向响应消息添加字段
- 向枚举添加值
- 添加仅输出资源字段
后向兼容的变更不会对符合最佳做法的应用程序产生影响。
编码指南
即使我们用上述某个后向兼容的变更更新了 API 框架,遵守下述编程指南的应用程序代码仍能继续正常运转。这些指南适用于使用 Control Center 的 REST API 和 SOAP API 的程序以及那些对来自 Control Center 推送 API 的消息进行解析的程序。
- 切勿对逻辑进行硬编码以匹配特定的参数顺序。
- 确保您的代码符合 HTTP 标准。该标准包括多个默认和可选参数,并且不断发展演变,经常出现新的标头和参数。
- 在进行字符串匹配之前,确保使用标记化来分隔标记。
- 在行的结尾处利用回车+换行符 (CRLF) 组合来提示没有更多要处理的标记。
- 根据数据类型对数据应用适当的转换。
- 始终在匹配逻辑中使用默认的“获取全部”以获取意外错误。
例如,假设您要解析 HTTP 标头中的 Content-Type 标记并基于该信息处理有效负载。一种方法是解析有效负载,查找与 content-type=application/x-www-form-urlencoded 精确匹配的字符串。不过,在将来的某个时候,Cisco Jasper 可能会决定使用可选参数 charset=UTF-8,这会将标记行更改为 content-type=application/x-www-form-urlencoded ; charset=UTF-8。HTTP 响应标头字符串中的这一变更会中断期望收到相同字符串的解析器代码。
更好的做法是分解标记,密切关注换行符和回车序列,放入错误捕获情景,等等。此特定标记在 HTTP 1.1 RFC2616(第 21 页)中定义为 <charset :token>,其中 charset 由 IANA 字符集注册表定义,Content-Type 是其中一个字符集。
要为 URL 编码形式的数据编写解析器,请参考万维网协会 (W3C) 的相关说明。
不可后向兼容的变更
尽管 Cisco Jasper 尽力确保大多数 API 变更都可以后向兼容,但有时冲突不可避免。不可后向兼容的变更包括:
- 删除或重命名服务、接口、字段、方法或枚举值
- 更改 HTTP 绑定
- 更改字段类型
- 更改资源名称格式
- 更改现有请求的可见行为
- 更改 HTTP 字义中的 URL 格式
- 向资源消息添加读取/写入字段
Cisco Jasper 会在不可后向兼容的变更生效前至少提前六个月向运营商发出通知。该通知将包括变更的具体信息,以及如何在不中断服务的情况下升级代码的指导说明。
API 版本
每个 API 函数都有一个版本号,用于标识 API 的结构和行为。Cisco Jasper 会在以下情况下递增此版本号:
- 函数收到不可后向兼容的变更,而且
- 前一版本的函数仍受支持。
如果 Cisco Jasper 进行后向兼容的函数变更,同时对前一版本的支持将会停止,则版本号保持不变。有关每种 API 类型的版本号,请参阅详细文档。
| 2.返回顶部 |
| 3.返回顶部 |
| 4.返回顶部 |
| 5.返回顶部 |
| 6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
Jasper:API / 后向兼容性的更多相关文章
- [整理]IIS 6.0 下部署 Asp.net MVC Web Api 后 HTTP PUT and DELETE 请求失败
http://guodong.me/?p=1560 ASP.NET MVC 4 has a new feature called WebAPI which makes it much easier t ...
- 部署Web API后Delete请求总是报 405(Method Not Allowed)解决办法
WebDAV 安装IIS的时候如果选择了WebDAV(Web Distribution Authorization Versioning) Publish,则所有的 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- 开源软件:NoSql数据库 - 图数据库 Cassandra
转载原文:http://www.cnblogs.com/loveis715/p/5299495.html Cassandra简介 在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了 ...
- Atitit.提升api兼容性的方法 v3 q326
Atitit.提升api兼容性的方法 v3 q326 1. Atitit.兼容性的“一加三”策略1 2. 2. 扩展表模式1 3. 3. 同时运行模式1 3.1. 3.1. 完美的后向兼容性2 3.2 ...
- c/c++ socket API 调用后的错误判断 perror errno
socket API 调用后的错误判断 perror errno 调用完socket API后,需要判断调用是否成功与失败.如果失败,会自动设置errno(是个整数), 并且用perror可以打印出具 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- Atitit.软件兼容性原理与实践 v5 qa2.docx
Atitit.软件兼容性原理与实践 v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...
- Google 地图 API V3 针对移动设备进行开发
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
随机推荐
- C 标准库 - <stdlib.h>
C 标准库 - <stdlib.h> 简介 stdlib .h 头文件定义了四个变量类型.一些宏和各种通用工具函数. 库变量 下面是头文件 stdlib.h 中定义的变量类型: 序号 变量 ...
- 金山面试CDN
History 今天去金山网络面试的时候,被问到性能优化,我说了几个.最后说到了CDN,我说要尽量把静态的内容放置到CDN,可是为什么呢?面试官说既然你说到CDN.你就说说它的原理. 之前有看过,可是 ...
- vue 避免渲染时闪烁
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Nginx 第三方模块的安装以及一致性哈希算法的使用
Nginx 第三方模块的安装以及一致性哈希算法的使用 第三方模块安装方法总结: 以ngx_http_php_memcache_standard_balancer-master为例 1:解压 到 pat ...
- 我的Android进阶之旅------>解决:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
错误描写叙述 今天在Android Studio项目中添加了jackson的开发包,编译执行时候.引发了例如以下的错误: Error:Execution failed for task ':app:t ...
- mysql 分表的3种方法
http://blog.51yip.com/mysql/949.html CSDN - Mysql MERGE分表对大数据量的处理 实战经验: 要分表的表引擎必须是myisam类型 ...
- ffplay 播放m3u8 hls Failed to open segment of playlist 0
用ffplay 播放m3u8文件 出现 Failed to open segment of playlist 0,Error when loading first segment 'test0.ts' ...
- Spring Cloud(十二):Spring Cloud Zuul 限流详解(附源码)(转)
前面已经介绍了很多zuul的功能,本篇继续介绍它的另一大功能.在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选 ...
- java 堆和栈一般理解
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同.Java自己主动管理栈和堆.程序猿不能直接地设置栈或堆. Java的堆是一个执行时数据区,类的(对象从中分配空间.这些对象通过new.n ...
- leetCode 104.Maximum Depth of Binary Tree(二叉树最大深度) 解题思路和方法
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
