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 ...
随机推荐
- 百科知识 kux文件如何打开
即使是官方自带的浏览器也无法打开 你可以直接复制文件名 然后在百度里搜即可 你自己下载的东西还是能转码的
- react 自定义 百度地图(BMap)组件
1.html 页面引入 相关js public/index.html <!DOCTYPE html> <html lang="en"> <head&g ...
- SD 卡PIN定义
转载:http://blog.sina.com.cn/s/blog_56e19aa70101avnw.html SD卡和TF卡接口引脚定义
- 基于websocket实现的web聊天室
# -*- coding:utf-8 -*- import socket import base64 import hashlib def get_headers(data): "" ...
- 几篇QEMU/KVM代码分析文章
QEMU/KVM结合起来分析的几篇文章,代码跟最新的版本有些差异,但大体逻辑一样,写得通俗易懂.我把链接放这里主要是为自己需要查看时调转过去方便,感谢作者的付出! QEMU Source Code S ...
- erlang取列表中某个值的位置
有个需求,比如在一个列表中,取出一个元素的位置,如果出现重复都取出.例如:List = [2,3,10,324,88,29,12],可以求大于某个值的位置,也可以取某个值的位置. 废话少说,直接上代码 ...
- 果壳、推库、虎秀、知乎、it世界
果壳.推库.虎秀.知乎.it世界
- UniversalImageLoader 学习
http://www.tuicool.com/articles/zIRNN3z http://www.cnblogs.com/avenwu/archive/2013/05/03/3058468.htm ...
- java四种线程池简介,使用
为什么使用线程池 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务. 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止消耗过多的内存 3.web项目应该创建统 ...
- jquery插件pagination实现分页
1.效果 2.HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" ...
