设计好的API是一项繁复的工作,但是优秀的设计是可以通过人为规划实现的,在本文中,我们将研究什么是好的设计以及如何在开发过程中实现它,还将介绍API设计的三个重要阶段:草图绘制,原型设计和交付实施,最后分享一些让工作更高效的工具。

优秀的API设计在迭代中发生

在开始设计API之前,先要了解其目的。从之前到你现在为什么需要构建API 。了解目的能让你更好的遵循开发方向,不至于走偏。不过,定义目的只是第一步,真正的诀窍是在实施过程中做出良好的设计决策。

作为API设计人员,我们做出的每项决策都会对产品的成功产生影响。大的决策例如API传输协议,信息格式等。除此之外还有一些与插件,名称,接口顺序等的小决策。当你把它们放在一起时,所有这些决定都会构成一种使用模式。如果你都做出了最适合的决定,那么这种模式将帮助你设计你所需要的API。

要想做出正确的设计决策,你需要先从错误的设计学习。事实上,在你摸索到正确之前,你可能需要犯很多次错误。这就是迭代的关键,没有人第一次就做对了,但是如果有足够的机会,你可以更接近预想。

照理说应该迭代我们的API设计,但在现实世界中很难做到这一点。因为在API发布后难以更改API,更改正在使用的API既昂贵又有风险。解决此问题的一种方法是每次更改时避免大幅更改界面。这是一个很好的习惯,并且是良好的API设计的基本规则。但是,有时突破性变更是不可避免的。理想情况下,在更改变得有代价之前,应该解决所有可用性和设计问题。

迭代设计过程

每次迭代都让我们可以根据其用途来设计我们的项目内容。例如,开发人员是否能够使用我们构建的内容完成目标?这个界面真的可以实现吗?等等。我们应该能够通过设计和实现许多接口而不真正发布它们来实现最佳的API设计。所以查看和模拟测试每个界面将提供如何改进产品的实用经验。

但是在实践中,这种宏观迭代设计是不可能实现的。我们没有时间反复地设计和验证一个API。更合理的方法是在设计过程中尽早执行迭代。这些早期的设计应该有足够的细节来产生改进机会,随着时间的推移,我们可以逐步提高细节(或保真度)的水平,直到最终达到我们想要的API设计。

这个渐进的过程在设计界很受欢迎,通常分为三个重要阶段:

  1. 草图绘制
  2. 原型设计
  3. 交付实施

1.草图的力量

草图是一种最普遍的设计行为。建筑师弗兰克盖里的草图非常有名,他的许多建筑项目都是以纸张上绘制的一系列草图开始的。他绘制了数百幅草图,每次都能接近理想的设计。

交互设计师Bill Verplank将草图描述为设计过程中必不可少的第一步。比尔·巴克斯顿(Bill Buxton)撰写了一本关于草图用户体验设计价值的完整书籍,提出了草图的关键特征以及重要性等。

在API设计过程的早期阶段结合草图使我们脑海中形成界面的概念模型。好的草图应该易于制作并且随时修正,如果花费太多时间来画图会得不偿失。

我们可以尝试不同类型的界面风格,并捕捉我们脑海中浮现的抽象概念。每一次的瞬间想法我们可以用草图的形式记录,方便我们审查和讨论它们。我们可以决定是否喜欢草图某个特定概念,然后在此基础上补充或者重新开始。

例如,我们可能会绘制一个与整个API相关的基本错误流或可应用于所有响应的响应消息格式。之后,在原型设计阶段,我们可以将这些想法应用到工作模型中。

2.原型设计

原型设计阶段是一个构建界面的更高保真度模型的过程,并测试我们在草图绘制过程中做出的一些假设。调用一个好的API原型,它应该处理实际请求消息并在需要时提供返回结果,甚至能够使用原型API创建一个简单的应用程序。

但是,构建原型应该比完全实现成本更低。降低成本的一种方法是模拟返回消息,而不是从后端系统提供实际结果。这就是MOCK,是快速构建原型的好方法。

我们应该能够基于草图构建两个或三个不同的原型,在我们构建的过程中,我们甚至可以回到草图阶段,根据我们从原型设计阶段学到的知识来尝试新的方向。

原型还可以为您的团队提供了用户对设计的早期反馈并允许观察实际使用情况的机会。如果界面具有很高的保真度,您可以要求潜在用户在此基础上构建应用程序并观察他们过程中面临的问题。

精心设计的API不仅应该易于使用,而且还要具有可持续性,可靠性,高性能和长寿命。设计周期就像一个科学过程,原型阶段是你在做出改变之前测试任何假设的机会。

3.实施交付

开发者的工作是将原型界面变成可交付使用的。最终的原型和支持草图形成了界面应该是什么样的描述。它们反映了集体设计决策,以形成需要构建的规范。实际上,使用正式的接口描述语言从原型转换到实现阶段是很有用的。

例如,当您对原型API感到满意时,您可以选择在一些API管理工具如EOLNKER等中对其进行描述。

虽然实施交付是最后目标,但设计不应该停留在这个阶段。这是一个利用实际使用数据进一步测试您在整个设计过程中所做假设的机会。正如原型API允许我们观察使用情况一样,实现的API允许我们在真实情况下分析使用情况。

例如,您可能希望验证您所做的设计假设。应用程序开发人员是否真的使用您为他们创建的便利操作?您是否获得了预期的用户类型?新用户是否遇到界面特定部分的问题?

此分析可能会导致您再次启动草图绘制过程,以支持进一步改进的界面。

使用工具自动化流程

工具和技术可以从根本上改善设计过程。降低草图和原型创建成本的工具将使设计团队能够在更短的时间内生成更多设计,从而改进设计决策。

结合工具自动化是大多数设计过程的重要组成部分。在建筑设计领域,SHoP(总部设在纽约的建筑师联盟)通过创新,协作和基于工具的设计取得了成功。他们的工艺包括原型设计工具,使设计人员能够将所用材料的物理特性结合在一起。这种方法允许他们创建数千个设计迭代,每个迭代都包含可以轻松评估的实现细节。

API设计领域中也有这种能优化的工具。实际上,全球范围内API服务领域中已经存在一些优秀的Web API设计工具。

现在,如EOLINKER、RAML、Swagger,都提供了出色的编辑工具来支持他们的语言。其中EOLINKER作为国内领先的API接口管理研发工具,正在以更全面的功能和简洁的页面超过如RAML、Swagger等国外传统单一服务产品。这些编辑器缩短了API的设计的创建时间,使得更容易在更短的时间内创建更多描述。有兴趣的点击查看EOLINKER的API编辑器。

成功完成迭代过程

遵循本文中描述的迭代设计风格,你将为你的团队创建有效的API。在流程开始时创建和评估许多低保真设计,以促进实验和构思。构建更高保真的原型和模拟实现来评估早期的设计理念。最后,为真实用户实施设计并收集数据以分析实际使用情况。

良好的API设计过程为您提供了生成最佳界面的机会。构建优秀API的秘诀不是专家指导或内部知识,相反,它是通过优秀的工具,语言和配置文件优化的迭代而成的,这会帮你完成越来越多优秀的API。

参考资料:Ronnie Mitra,From Doodles to Delivery: An API Design Process

原文地址:https://www.infoq.com/articles/doodles-to-delivery/?useSponsorshipSuggestions=true

从草图绘制到实施交付:优秀API设计完整流程的更多相关文章

  1. 优秀API设计的十大原则

    优秀API设计的十大原则 2015-09-23    分类:编程开发.设计模式.首页精华暂无人评论 分享到:更多4 二十万年薪PHP工程师培养计划 成为被疯抢的Android牛人 风中叶讲Java重难 ...

  2. atitit.api设计 方法 指南 手册 v2 q929.docx

    atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...

  3. 一篇文章帮你梳理清楚API设计时需要考虑的几个关键点

    本文作者是Enchant的架构师,他最近研究了Netflix.SoundCloud.谷歌.亚马逊.Spotify等公司的微服务实践,并根据自己的理解总结出了一套适用于现代Web和云技术的微服务实战经验 ...

  4. [转] 阿里研究员谷朴:API 设计最佳实践的思考

    API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...

  5. Web API设计方法论

    英文原文:A Web API Design Methodology 为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定 ...

  6. 从商业角度探讨API设计

    为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...

  7. Web API设计方法论--比较完整的web api 开发过程

    为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...

  8. API 设计 POSIX File API

    小结: 1. https://mp.weixin.qq.com/s/qWrSyzJ54YEw8sLCxAEKlA API 设计最佳实践的思考 谷朴 阿里技术 昨天   阿里妹导读:API 是模块或者子 ...

  9. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

随机推荐

  1. C++中的new,operator new与placement new

    以下是C++中的new,operator new与placement new进行了详细的说明介绍,需要的朋友可以过来参考下     new operator/delete operator就是new和 ...

  2. KM算法 详解+模板

    先说KM算法求二分图的最佳匹配思想,再详讲KM的实现.[KM算法求二分图的最佳匹配思想] 对于具有二部划分( V1, V2 )的加权完全二分图,其中 V1= { x1, x2, x3, ... , x ...

  3. java.lang.ClassNotFoundException: org.jaxen.JaxenException 解决方法

    当遇到如下exception时, May 11, 2017 4:23:17 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE ...

  4. 30212Java_数组

    数组 1.综述 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 数组的三个 ...

  5. 从零开始实现放置游戏(七)——实现挂机战斗(5)RMS系统后台参数校验

    前面几章实现了在RMS系统中进行数据的增删查改以及通过Excel批量导入.但仍有遗留的问题,比如在新增或编辑时,怪物的生命值.护甲等数据我们可以输入负值,这种数据是不合理且没有意义的.本章我们就实现服 ...

  6. docker部署asp.net core

    上一篇文章我们成功的在win10上边安装了docker,这篇文章,我们将在docker中部署asp.net core程序, 先来一张运行成功的hello world镇楼 现在开始,首先创建一个asp. ...

  7. 利用Settings.bundle切换网络环境

    目的:一次性打包,测试可以去iPhone设置,找到APP,点击后然后可以自主切换网络环境(测试.预生产.正式).关闭APP重新打开生效. 撸起袖子加油干…… 1.生成并设置Setting.bundle ...

  8. 惊:FastThreadLocal吞吐量居然是ThreadLocal的3倍!!!

    说明 接着上次手撕面试题ThreadLocal!!!面试官一听,哎呦不错哦!本文将继续上文的话题,来聊聊FastThreadLocal,目前关于FastThreadLocal的很多文章都有点老有点过时 ...

  9. List中的set方法和add方法

    public class TestList {public static void main(String[] args){   List l1 = new LinkedList();   for(i ...

  10. PATB 1041 考试座位号(15)

    #include <cstdio> #include <iostream> using namespace std; struct student{ char str[15]; ...