API开发的版本控制技巧

API开发的版本控制技巧

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/42779095

《API开发的版本控制技巧》

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

在设计和构建API时,API的版本控制是非常重要的。

必须确保新API对于现有的API不会造成破坏。

首先,也是最重要的,可以把版本号放入API的URL中。这样可以把主要版本更新放入API。比如,我们在调用CHUser Center API时,可以在URL中使用/api-v1或/api-v2来指出所使用的API版本。这是很常见的做法。

在API版本控制中,还有一点也很重要。希望API能支持次要版本的更新。次要版本更新所造成的变化仍然会影响接口,因此有可能会影响当前API的使用者,但它们与主版本的URL和API的基本功能都在变化不同,URL和API基本功能仍然是相同的。比如在CHUser Center API,次要版本的修改是通过客户在API调用时发起请求的HTTP头部做指定的。

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

头部的版本元素看起来是这样的:

Element-Version: 1

再举一个API次要版本更新的例子,如果我们想修改响应的JSON字段的名称。假设我们有一个名为GET /people的API调用,它会返回以下JSON数据:

{

  “firstN”: “foo”

}

我们决定把JSON字段中的firstN改成firstName。很显然,这只是一个小改动,所以它属于API次要版本更新的范畴,无须做主版本的修改和不同的URL签名。因此,我们会创建另一个GET /people接口,要调用它还需要在HTTP头部加上

Element-Version: 2

然后就会返回以下JSON数据:

{

  “firstName”: “foo”

}

在CHUser Center API中,当一个新用户注册后,我们会设置此用户的HTTP头部默认为CHUser Center上最新的Elements-Version版本。这可以保证新用户总是使用我们提供的最新API服务,这样就无须在每次API调用时指定任何HTTP头部元素了。当然,也可以手动指定版本。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109587.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • GO Excel 转 JSON (完整代码)[通俗易懂]

    GO Excel 转 JSON (完整代码)[通俗易懂]packagemainimport( “fmt” “github.com/xuri/excelize/v2” “io/ioutil” “os” “path/filepath”)funcinit(){}//配置文件目录varconfigPathstring=”../../Configs”varoutjsonPathstring=”./json/”funcgetFileList(pathstring)[]string{ varall_f.

    2022年5月8日
  • JAVA jstack命令详解「建议收藏」

    JAVA jstack命令详解「建议收藏」jstack命令详解转载于:https://www.cnblogs.com/gotodsp/p/6538644.html

    2022年10月25日
  • 详解 JVM Garbage First(G1) 垃圾收集器「建议收藏」

    详解 JVM Garbage First(G1) 垃圾收集器「建议收藏」版权声明:本文为博主原创文章,转载请联系作者并注明出处。详解JVMGarbageFirst(G1)垃圾收集器前言GarbageFirst(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命。如果使用Java8/9,那么有很大可能希望对G1收集器进行评估。本文详细首先对JVM其他的垃圾收集器进行总结,并与G1进

    2022年6月13日
  • Android resource linking failed_android:authorities

    Android resource linking failed_android:authorities我正在尝试处理我的主类中的推送通知(并且我也有GCMBroadcastReceiver-用于我未运行主类时出现的所有通知)但是registerReceiver无法正常工作(GCMBroadcasrReceiver正常工作)我的代码:publicclassMainextendsActivity{protectedvoidonCreate(BundlesavedInstanceStat…

    2022年9月12日
  • SAE J1939物理层

    SAE J1939物理层在SAEJ1939-11和ISO11898中对商用车使用的线束都是屏蔽双绞线,即为除了电源、地、CAN_H、CAN_L之外还有一个屏蔽线,并且所有ECU的屏蔽线都接到同一个地线上,一般接地点选择在网络的中央位置上。但是在实际使用中,多数整车厂使用的都是非屏蔽双绞线,比较而言,非屏蔽双绞线的EMC特性要差一些,在1939中正常使用屏蔽双绞线一路CAN网络上最多可以接入30个ECU,而对于非屏蔽双

    2022年5月22日
  • Python读取excel并生成xml_python修改xml

    Python读取excel并生成xml_python修改xml在使用pandas批量处理Excel文件时,抛出XLRDError错误:XLRDError:Unsupportedformat,orcorruptfile:ExpectedBOFrecord;found’

    2022年8月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号