题外话

在新的项目中,推行了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进行说明)的更多相关文章

  1. API生命周期第二阶段——设计:采用swagger进行API描述、设计

    本篇博客主要是以swagger为依托,介绍API生命周期的第二个阶段--设计!在详细介绍之前,我必须声明一点:如果是想了解swagger和项目框架的集成的,这里没有.我要介绍的swagger进行的AP ...

  2. API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式

    这篇博客,主要是宏观介绍一下开发模式,尤其是针对于目前公司前后分离的项目! 一.API实施模式概述 API实施模式,主要是三个,其中API-First又是作为一种指导思想的一种,所以,简单来说事实实施 ...

  3. API生命周期第三阶段:API实施:使用swagger codegen生成可部署工程,择取一个作为mock service

    在分享培训了swagger对于API的设计之后,有一些人问我说:你看,现在咱们前端使用web_API做为mock data在进行测试,后端也有mock 测试.然后我们再进行联调,这之中肯定会出现一些偏 ...

  4. Uber的API生命周期管理平台边缘网关(Edge Gateway)的设计实践

    设计边缘网关(Edge Gateway),一个高可用和高可扩展的自助服务网关,用于配置.管理和监控 Uber 每个业务领域的 API. Uber 的 API 网关的演进 2014 年 10 月,优步开 ...

  5. java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明

    文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...

  6. API生命周期

    这一系列的文章,主要是结合了参加Oracle code之后对于API治理的记录收获,以及回到公司后,根据公司目前的一些现状,对此加以实践的过程总结 API生命周期通常包括八个内容,而安全策略贯穿始终. ...

  7. Uber三代API 生命周期管理平台实现 Uber

    Uber三代API 生命周期管理平台实现 - InfoQ https://www.infoq.cn/article/H8Ml6L7vJGQz0efpWvyJ Uber 三代 API 生命周期管理平台实 ...

  8. Asp.net Mvc 与 Web Api生命周期对比

    完整的生命周期比较复杂,对细节感兴趣的同学可购买老A的图书学习:传送门 本文只简单讲述路由注册.controller创建.action选择的3个主逻辑线,其他的内容大家可自己阅读相应的代码 先上二者单 ...

  9. FileNet P8 工作流生命周期管理和 Process Engine API 应用介绍

    摘录:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902wangzheng/ FileNet P8 工作流生 ...

随机推荐

  1. SharePoint 2013 缺少站点保存为模板选项

    如果您尝试在SharePoint Server 2013中保存站点,我们没有看到“将站点另存为模板”选项,则可能是因为该站点已启用站点发布功能.如 之前文章提到 “SharePoint 2010 缺少 ...

  2. userBean的删除

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  3. Netweaver和CloudFoundry是如何运行Web应用的?

    Netweaver 在Jerry的微信公众号文章SAP Fiori应用的三种部署方式里提到SAP Fiori应用以BSP应用的方式部署在ABAP Front-End Server上.那么这些BSP应用 ...

  4. 重温Javascript(一)-基本概念

    工作中要用到JavaScript,一组复习笔记. 一些看法 1. 想想JavaScript目前最常用的宿主环境,浏览器或者服务端V8,都是单线程,所以不用过多的考虑并发的问题,如果是协程来实现异步的方 ...

  5. UVA 11572 Unique snowflakes (滑窗)

    用set,保存当前区间出现过的数字,如果下一个数字没有出现过,加入,否则删掉左端点,直到没有重复为止 #include<bits/stdc++.h> using namespace std ...

  6. Spark集群任务提交

    1. 集群管理器 Spark当前支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群. Apache Mesos—通用的集群管理,可以在其上运行Hadoop Ma ...

  7. 2018.2.11 JS的定时器制作

    定时器 1.定时器定义 var time = window.setInterval("执行名词",间隔时间) 关闭定时器 clearInterval(定时器名称) 倒计时定时器 s ...

  8. centos7-httpd虚拟主机

    Apache虚拟主机: 一台WEB服务器发布单个网站会非常浪费资源,所以一台WEB服务器上会发布多个网站, 在一台服务器上发布多网站,也称之为部署多个虚拟主机,WEB虚拟主机配置方法有三种: 基于单I ...

  9. python之可迭代对象

    1. 可迭代对象是什么? 字面意思分析:可以重复的迭代的实实在在的东西 专业角度: 内部含有'__iter__'方法的对象,就是可迭代对象 2. 可迭代对象都有什么? list,dict(keys() ...

  10. 十分钟看懂,未来Web前端开发最新趋势

    首先,展望未来趋势我们就要弄懂过去的一年,也就是18年,web前端开发的重要新闻.重要事件和JavaScript的各种流行框架.模式发展趋势. 我们来快速回顾一下. NPM热门前端框架下载 先来看最热 ...