API生命周期第二阶段——设计:如何设计API(基于swagger进行说明)
题外话
在新的项目中,推行了swagger用于对API的设计。以期待解决我们上篇博客中说到了一些现象,提升工作效率。那么,结合到当时和全项目组成员做培训,以及后续的给主要应用者做培训,以及当初自己接触到swagger的时候,我简单总结一下如何设计一个说“人”话的API(主要指rest API)。
备注:哈哈,又托大了哈。就在我决定写这篇文章的时候,我特意到百度搜了一下“如何设计API”,额,还是决定凑凑热闹!
如何设计API呢,原则就是:KISS。 让你的API学会KISS
作为开发者来说,在开发API的时候,必须得明确:这个API提供什么服务??? 用户如何能够理解我这个API的用途......
而作为用户呢,额,想一下自己在使用API(内部的,外部的,谁管它)的时候,我就会想我如何使用已提供的API进行编码,有没有一种更好更容易的使用方案......
那么作为整个API维护的负责人来说,他可能还得考虑,API如何兼容,维护扩展
设计API,由于我们项目组采用的是swagger,所以,把文档、版本、语义上的内容,也就是可用性和可读性暂时忽略掉了。 当然,对于如何快速上手swagger设计API,等会儿还得提几个点(感觉寒寒和晶晶怎么那么聪明可爱啊,上手贼快了)
一、KISS原则
KISS原则,其实很简单,就是 keep it simple,stupid。
我相信很多人,包括我自己,有时候在写API的时候,总会纠结一些问题,比如说:目前他只需要两个参数的接口,但我感觉他可能会需要第三个参数,然后就在扩展接口的参数,然后再想了一圈,开始实施。 但这样子,又经常出现的是什么情况呢???
由于使用者只需要两个参数,但你给出了第三个(不管是否使用了重载,这是在讲rest API, 不是像接口一样根据传入的参数自动调取对应实现),那么使用者就会开始迷惑,我到底用哪一个? ???像我这种有强迫症的,我还会想,那第三个参数到底是什么???是不是我当前的设计有问题,其实是需要第三个参数的????
所以,再次强调:API需要KISS,多多KISS,你在犹豫要不要往上新添东西的时候,那答案是:不要!
二、关注关键语义
在反复强调了KISS原则之后(再次强调,因为swagger的API语义很清晰,包括协议,路径,权限,方法参数等等,一旦你不按规则做,API编辑器会报错。所以,不多说这个!)就不得不说到新手操作swagger了。在实践的过程中,发现一个现象就是,可能是由于对新事物的陌生,也或许是别的原因,无论什么。会出现不会用swagger设计API的现象,就是参数和返回值不知道写什么,怎样写多个GET方法等等。
但是,改善这个现象,只需要考虑一点:把自己当成用户,你最希望这个API提供哪些说明,那基本上,这个API就要提供这些说明!其实,这跟以往写API是一样的,当我们写一个方法时,在之前,我们通常要求说:返回类型,参数个数,参数类型,方法名(在rest API中,就是请求路径),方法注释等等。
所以,在用swagger的时候,也就照着我们以往的形式来就行了。其实,我们用swagger就是用来设计API,跟咱们以前的接口文档很类似,不同的就是,语义更加明确清晰,可视化mock测试。
像有一些别的,比如说:tags、summary、operationId一类,在最开始接触的时候,可以适当忽略。跟参加聚会似的,咱先去找到咱们熟悉的人物,然后让自己在一个环境中轻松的待下来,这时候那些咱们熟悉的人物或者我们自己,就能去发掘那些有意思,但我们目前可能还不很熟悉的内容。
说到这儿,好像跑偏了,但结合到自己半个小时从决定用swagger而没有用blueprint,到发布我第一版高可用API,和后来对于同组成员的差不多就1个小时的培训,然后她们就能无障碍使用swagger,得出的结论真的就是:从自己熟悉的入手,把新东西学旧。这就是最快的接收方式!
三、总结
像swagger,它本身就是一个全球最受欢迎的API辅助工具。那么,要做到被更多人,被很多人接受,它肯定就不会很复杂。要知道,这个世界,真的还是大众居多的。所以,心里上不要有压力,简单大方上手,so easy。 然后,它经历了几个版本,被很多很多的人应用接受,那它对于API设计这个部分,不管是规范还是别的什么,都是可见一斑的。事实上,它对于每一个API有一个框架,就跟填表格一样,直接填写就行了。还有可视化的界面用于检测,这个API是不是你想要的。
话说多了都要进去肺里,实践了就知道!
API生命周期第二阶段——设计:如何设计API(基于swagger进行说明)的更多相关文章
- API生命周期第二阶段——设计:采用swagger进行API描述、设计
本篇博客主要是以swagger为依托,介绍API生命周期的第二个阶段--设计!在详细介绍之前,我必须声明一点:如果是想了解swagger和项目框架的集成的,这里没有.我要介绍的swagger进行的AP ...
- API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式
这篇博客,主要是宏观介绍一下开发模式,尤其是针对于目前公司前后分离的项目! 一.API实施模式概述 API实施模式,主要是三个,其中API-First又是作为一种指导思想的一种,所以,简单来说事实实施 ...
- API生命周期第三阶段:API实施:使用swagger codegen生成可部署工程,择取一个作为mock service
在分享培训了swagger对于API的设计之后,有一些人问我说:你看,现在咱们前端使用web_API做为mock data在进行测试,后端也有mock 测试.然后我们再进行联调,这之中肯定会出现一些偏 ...
- Uber的API生命周期管理平台边缘网关(Edge Gateway)的设计实践
设计边缘网关(Edge Gateway),一个高可用和高可扩展的自助服务网关,用于配置.管理和监控 Uber 每个业务领域的 API. Uber 的 API 网关的演进 2014 年 10 月,优步开 ...
- java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明
文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...
- API生命周期
这一系列的文章,主要是结合了参加Oracle code之后对于API治理的记录收获,以及回到公司后,根据公司目前的一些现状,对此加以实践的过程总结 API生命周期通常包括八个内容,而安全策略贯穿始终. ...
- Uber三代API 生命周期管理平台实现 Uber
Uber三代API 生命周期管理平台实现 - InfoQ https://www.infoq.cn/article/H8Ml6L7vJGQz0efpWvyJ Uber 三代 API 生命周期管理平台实 ...
- Asp.net Mvc 与 Web Api生命周期对比
完整的生命周期比较复杂,对细节感兴趣的同学可购买老A的图书学习:传送门 本文只简单讲述路由注册.controller创建.action选择的3个主逻辑线,其他的内容大家可自己阅读相应的代码 先上二者单 ...
- FileNet P8 工作流生命周期管理和 Process Engine API 应用介绍
摘录:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902wangzheng/ FileNet P8 工作流生 ...
随机推荐
- Vijos P1243 生产产品 (单调队列优化DP)
题意: 必须严格按顺序执行M个步骤来生产一个产品,每一个步骤都可以在N台机器中的任何一台完成.机器i完成第j个步骤的时间为T[i][j].把半成品从一台机器上搬到另一台机器上也需要一定的时间K.每台机 ...
- 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件
这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...
- Cesium左右立体视觉续篇——遗留问题(渲染错误)以及临时替代方案
遗留问题详细说明 已解决部分 立体视觉中的视差: 横向渲染压缩. 遗留问题 1.左右分屏中的部分地图切片未渲染 问题描述:如下图(图片为解决问题后的图片),红色区域会显示黑色,无法正常显示影像.2.相 ...
- groupmod - 修 改 群 组
总览 SYNOPSIS groupmod [-g gid [-o]] [-n group_name ] group 描述 DESCRIPTION groupmod 命 令 会 参 照 你 命 令 列 ...
- linux文本编辑器-VIM基本使用方法
vim [OPTION]... FILE... +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首vim + file 直接打开file,光标在最后一行 三种主要模式 ...
- 安装python3.6 pip3 flake8
apt-get install python3-pip # Python3 ➜ ~ pip3 -V pip 9 ...
- jfinal的配置文件详解
1.去官网下载最新的jar包(我这是JFinal-lib-2.2) tomcat+mysql 所需要的jar 2.配置web.xml <filter> <filter-name> ...
- iOS快速开发框架--Bee Framework
Bee Framework是一款iOS快速开发框架,允许开发者使用Objective-C和XML/CSS来进行iPhone和iPad开发,由 Gavin Kwoe 和 QFish 开发并维护. 其早期 ...
- NowCoder 9.9 模拟赛
T1.中位数 二分答案x,原序列大于x的置为1,小于x的置为-1,判断是否存在长度大于m的区间和大于0(也就是大于x的数多于小于x的数),若有,则ans>=x,否则ans<x #inclu ...
- k8s调度的预选策略及优选函数
scheduler调度过程: Predicate(预选)-->Priority(优选)-->Select(选定)调度方式: 1.节点亲和性调度(NodeAffinity)使用n ...