要描述了几种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. app的底部菜单设计

    一.个人看法. 1.一般都是四个菜单或者五个菜单,这个是绝对主流,我估计占比达99%.当然也有三个菜单图标的,也有零个菜单图标的 2.如果该app软件功能复杂,那么尽量选择5个图标布局.比如苹果app ...

  2. mysql的转储SQL文件

    1.转储数据库的SQL文件,有两个选择,一是转储结构:另一种是转储数据与结构: 2.以上两种转储都不会将事件(定时器)转储,所以特别注意这个,否则以为将数据库备份完了,其实漏掉了所有的事件代码,所以需 ...

  3. Servlet—文件上传

    什么是Commons? Apache的一个开源子项目,Commons-FileUpload是 Conmmons下子项目. Commons-FileUpload的作用? 1:该组件可以方便地嵌入JSP页 ...

  4. How To View the HTML Source in Google Chrome

    Whether you are new to the web industry or a seasoned veteran, viewing the HTML source of different ...

  5. 公司里面用的iTextSharp(教程)---生成一个简答的PDF的语法

    本来打算先写一个项目大家一起练习的,但是后来发现不懂一些基本的语法,几乎做了之后也有些不明白,下面我们一起简简单单的看一下哈~~ 语法1:Document document = new Documen ...

  6. jquery ajax基本用法

    <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script> <s ...

  7. mysql数据库----索引原理与慢查询优化

    一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...

  8. 【译】理解node.js事件轮询

    Node.js的第一个基本论点是I/O开销很大. 当前编程技术中等待I/O完成会浪费大量的时间.有几种方法可以处理这种性能上的影响: 同步:每次处理一个请求,依次处理.优点:简单:缺点:任何一个请求都 ...

  9. Django框架之跨站请求伪造

    跨站请求伪造(英语:Cross-site request forgery),也被称为one-click attack或者session riding,通常缩写为CSRF或者XSRF, 是一种挟制用户在 ...

  10. gcc与glibc关系

    glibc是什么,以及与gcc的关系? glibc是gnu发布的libc库,也即c运行库.glibc是linux 系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会倚赖于glibc.g ...