要描述了几种API版本控制的方法。用户可以查询原始的API,或者添加定制的头文件来接收特定的版本。如果应用程序收到一个重大修订,将URI修改为V2。在进行迭代改进时,将创建与更改日期相一致的端点,并允许用户将日期信息附加。然后,可以选择保留旧版本的时间。而且在设计和版本化API时,您可以应用许多不同的理念。以下为译文

API设计是一个“火辣热门”的话题!关于API的最佳结构和版本的方法已经有很多优秀的文章介绍过了。在这篇文章中,我们将会深入研究不同的API设计之间有哪些冲突的地方,并在此基础上提出我们的中立观点,然后展示我们是怎样使用FLY去验证我们的中立观点的。

API版本控制
虽然没有一个统一的方式来设计API,但是有必要明确一下许多开发人员同意的几个关键想法。一个结构良好的Web API应该是…

1:与客户端保持持续的协议。协议可以保证一致性和稳定性;客户端应该可以使用API,而不用担心它会突然中断或消失。

2:更改或升级后向后兼容。对新端点的旧查询仍应产生预期的返回值。

3:RESTful(互联网应用程序)。它应当可以识别HTTP的相关动作 :GET,PUT,POST,PATCH,DELETE等。

为了最好地实现这些理想的要求,在如何实现不同版本的API上就是仁者见仁,智者见智了。我们来看看它们中的三个…

URI版本控制

curl https://example.com/api/v2/lists/3 

通过解除URI中的版本号,客户端可以访问/v1/或/v2/API。它可读,适应性强,可直接插入用户浏览器。

Header版本控制

curl https://example.com/api/lists/3 \
-H 'Accept: application/vnd.example.v2+json'

API URI保持不变。头版本控制主要是通过自定义的Accept HTTP头来完成的。核心URI仍然保持不变,但是能最好表示出API的资源,并且版本的更改将通过头和响应类型传递。

没有版本控制!

curl https://example.com/api/lists/3  

你需要什么版本?让我们扩展我们的API以适应新的或调整的案例!放弃旧的框架,选择建立和扩展。

中立观点
每一个方法都是合理的,如果有好的设计思路的话,它们都可以呈现优异的API。 最终,我们希望它们都能实际运用起来,尽可能快地传输信息。一个没有版本控制的绿色API可能会变得混乱,所以我们将远离这一点。相反,我们将接受URI和HTTP标头中的版本控制。作为一个转折,我们将使用一个自定义的HTTP头。

为了避免出现连我们自己都无法了解为什么请求会如此混乱且冗长的情况出现,让我们更深入地了解一下为什么我们要使用这种方法。我们的方法是基于这样一句格言:随着太阳的升起,你的应用将会改变。

参考:https://blog.csdn.net/qiansg123/article/details/80130050

微服务设计 - api版本控制的更多相关文章

  1. 轻量级容器Docker+微服务+RESTful API

    [宗师]李锟(44035001) 10:23:03感觉Docker这样的轻量级容器+微服务+RESTful API三者可以形成一个铁三角.这也代表了PaaS未来的发展方向. [宗师]李锟(440350 ...

  2. .net core 微服务之Api网关(Api Gateway)

    原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2. ...

  3. 基于DDD的微服务设计和开发实战

    你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴 ...

  4. 驱动领域DDD的微服务设计和开发实战

    你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴 ...

  5. 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

        系列文章目录:     <微服务设计>读书笔记大纲 一.CI(Continuous Integration)简介  CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2: ...

  6. SOA与ESB,微服务与API网关

    SOA与ESB,微服务与API网关 SOA: ESB: 微服务: API网关: 参考资料: 1.漫画微服务,http://www.sohu.com/a/221400925_100039689 2.SO ...

  7. DDD之1微服务设计为什么选择DDD

    背景 名词解释 如果你的团队目前正是构建微服务架构风格的软件系统,问自己两个问题? 软件架构演进 软件架构大致经历了从单机架构,集中式架构,分布式微服架构,程序的层次图如下所示. 单机架构 特点如下: ...

  8. 一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队

    一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队

  9. 微服务&#183;API网关

    阅文时长 | 3.52分钟 字数统计 | 1232字符 主要内容 | 1.什么是API网关 2.微服务中的API网关 3.几种部署策略 『微服务·API网关』 编写人 | SCscHero 编写时间 ...

随机推荐

  1. uva10905

    /* 很好的字符串 比较方法 很多个字符串 组成的 数字 需要最大 然后 比较 a和b 是 比较a+b 和b+a 的大小 */ #include<cstdio> #include<s ...

  2. 20154312 曾林 Exp4恶意软件分析

    写在前面 如果把恶意软件比作罪犯的话,怎么看这次实验? 实验目的:以后能够在茫茫人海中找到罪犯. 实验过程:现在以及抓到了一个罪犯,把他放到茫茫人海里去,看看他和普通人有啥区别.这些区别就是罪犯的特征 ...

  3. java commons.lang3 ArrayUtils使用

    java commons.lang3 ArrayUtils使用import org.apache.commons.lang3.ArrayUtils; /** *数组追加数组,不重复 */ public ...

  4. Rest风格(占位符)的映射

  5. ACM题目————STL练习之求次数

    题目地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=1112 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个 ...

  6. sp3485推荐电路(转)

    源: sp3485推荐电路 注意:转自电子发烧友 转:485通信自动收发电路 转: RS485收发的3种典型电路-重点-自动收发电路

  7. Python Web学习笔记之递归和迭代的区别

    电影故事例证:迭代——<明日边缘>递归——<盗梦空间> 迭代是更新变量的旧值.递归是在函数内部调用自身. 迭代是将输出做为输入,再次进行处理.比如将摄像头对着显示器:比如镜子对 ...

  8. js常量

    原文链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const const 声明创建一个 ...

  9. 20145105 《Java程序设计》实验二总结

    实验二 Java面向对象程序设计 一. 实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.多态.建模 初步掌握UML 熟悉S.O.L.I.D原则 了解设计模式 二. 实验步骤 (一 ...

  10. bzoj 1010 玩具装箱toy -斜率优化

    P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具 ...