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 工作流生 ...
随机推荐
- GetRelativePath获取相对路径
public static string GetRelativePath(string baseDirPath, string subFullPath) { // ForceBasePath to a ...
- js操作文档对象的节点
好吧,为了能让大家不至于睡着,我们先回顾先前面的东东吧~ 1.首先我们写了javaScriput的是一门弱类型的解释性的脚本语言:弱类型:我们的变量不用申明其具体的数据类型,在使用的时候浏览器根据其存 ...
- UVA 12171 (hdu 2771)sculptrue(离散化)
以前对离散化的理解不够,所以把端点和区间区分来考虑但是做完这题以后有了新的认识: 先来看一个问题:给你以下的网格,你需要多少空间去存储红点区间的信息呢? 只需要图上所示的1,2,3,4个点就足够表示红 ...
- UVA 10954 Add All 全部相加 (Huffman编码)
题意:给你n个数的集合,每次选两个删除,把它们的和放回集合,直到集合的数只剩下一个,每次操作的开销是那两个数的和,求最小开销. Huffman编码.Huffman编码对于着一颗二叉树,这里的数对应着单 ...
- codeforce Gym 100500A Poetry Challenge(博弈,暴搜)
题解:状态压缩之后,暴力dfs,如果有一个选择,能让对手必败,那么就是必胜态,能转移到的状态都是对手的必胜态,或者无法转移,就是必败态. 总算是过了,TLE是因为状态没判重. #include< ...
- cv2.bilateralFilter 双边滤波
双边滤波bilateralFilter 双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单.非迭代.局部处 ...
- MFC:Unicode和多字节字符集下 CString和char的转化(MFC中)
2011-05-16 00:10 1166人阅读 评论(0) 收藏 举报 mfcdelete Unicode下 CString转TCHAR TCHAR* szMsg = new TCHAR[wcsle ...
- IDEA安装及破解
一.下载(IDEA 2019.1.2) 1.下载地址:https://www.jetbrains.com/idea/download/#section=windows 2.选择版本,并选择最终版(.e ...
- 学习jQuery的免费资源:电子书、视频、教程和博客
jQuery毫无疑问是目前最流行的JavasScript库.排名最前的网站中70%使用了jQuery,并且jQuery也成为了Web开发的标准.如果你想找Web开发方面的工作,了解jQuery会大大的 ...
- 【费用流】 ICPC 2016 China Final J. Mr.Panda and TubeMaster
表示“必须选”的模型 题目大意 题目分析 一个格子有四种方式看上去很难处理.将横竖两个方向分开考虑,会发现:因为收益只与相邻格子是否连通有关,所以可以将一个格子拆成表示横竖两个方向的,互相独立的点. ...