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 工作流生 ...
随机推荐
- SharePoint 2013 缺少站点保存为模板选项
如果您尝试在SharePoint Server 2013中保存站点,我们没有看到“将站点另存为模板”选项,则可能是因为该站点已启用站点发布功能.如 之前文章提到 “SharePoint 2010 缺少 ...
- userBean的删除
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- Netweaver和CloudFoundry是如何运行Web应用的?
Netweaver 在Jerry的微信公众号文章SAP Fiori应用的三种部署方式里提到SAP Fiori应用以BSP应用的方式部署在ABAP Front-End Server上.那么这些BSP应用 ...
- 重温Javascript(一)-基本概念
工作中要用到JavaScript,一组复习笔记. 一些看法 1. 想想JavaScript目前最常用的宿主环境,浏览器或者服务端V8,都是单线程,所以不用过多的考虑并发的问题,如果是协程来实现异步的方 ...
- UVA 11572 Unique snowflakes (滑窗)
用set,保存当前区间出现过的数字,如果下一个数字没有出现过,加入,否则删掉左端点,直到没有重复为止 #include<bits/stdc++.h> using namespace std ...
- Spark集群任务提交
1. 集群管理器 Spark当前支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群. Apache Mesos—通用的集群管理,可以在其上运行Hadoop Ma ...
- 2018.2.11 JS的定时器制作
定时器 1.定时器定义 var time = window.setInterval("执行名词",间隔时间) 关闭定时器 clearInterval(定时器名称) 倒计时定时器 s ...
- centos7-httpd虚拟主机
Apache虚拟主机: 一台WEB服务器发布单个网站会非常浪费资源,所以一台WEB服务器上会发布多个网站, 在一台服务器上发布多网站,也称之为部署多个虚拟主机,WEB虚拟主机配置方法有三种: 基于单I ...
- python之可迭代对象
1. 可迭代对象是什么? 字面意思分析:可以重复的迭代的实实在在的东西 专业角度: 内部含有'__iter__'方法的对象,就是可迭代对象 2. 可迭代对象都有什么? list,dict(keys() ...
- 十分钟看懂,未来Web前端开发最新趋势
首先,展望未来趋势我们就要弄懂过去的一年,也就是18年,web前端开发的重要新闻.重要事件和JavaScript的各种流行框架.模式发展趋势. 我们来快速回顾一下. NPM热门前端框架下载 先来看最热 ...