摘要:俗话说:“好东西就要贡献出来和大家一起分享”,尤其是在互联网业务高度发达的今天,如果你的创业公司提供了一项很酷的技术或者服务,并且其他用户也非常喜欢该产品,在这种情况下,最好的解决方案是什么呢?把它作为一项服务——通过RESTful API的形式进行开放共享。

API by thesmith

俗话说:“好东西就要贡献出来和大家一起分享”,尤其是在互联网业务高度发达的今天,如果你的创业公司提供了一项很酷的技术或者服务,并且其他用户也非常喜欢该产品,在这种情况下,最好的解决方案是什么呢?把它作为一项服务——通过RESTful API的形式进行开放共享。

嗨,别忘了,如果这样做,未来它或许会像Twitter那么有名。当然它可能也会给你带来些荣誉,或者会给你带来不菲的收入,好了,下面让我们来谈谈如何做一个API呢?

提供一个基于内部架构之上的相同接口,打开它,最后在诸如HackerNews、Twitter、和Reddit 这类的技术论坛上宣布一下,这样就好了吗?就这么简单吗?

答案当然是否定的,如果要提供一个优质的公共API接口,你至少需要做到以下六点

  • 授权开发人员的规则
  • 注意限流控制
  • 确定是否要收费
  • 通常,如果收费,那么请求越多,钱就越多——你需要准备一个计价表
  • 利用好工具对服务端进行监控
  • 好的技术和帮助文档
  • 支持
  • 支持
  • 支持

..........

以上提到的,都是你必须要提供的。

注意事项

在权限分配方面,你需要根据客户来提供相应的API接口。或许有些API需要采取不同的配额,或许限流的多少,这些都需要取决于所需资源和服务请求数。

仔细思考一下,这远比讨价还价来的更划算一些——只需提供一个API在外面,如果该API比较受欢迎,它还会给你的创业带来些额外的收入。

几年前,我曾开放一个自己做的API,仅仅是一个REST调用,我自己都无法保证它是否真正能够使用,当然最后结果的确是这样,而且问题很多。

许多人在我毫不知情的情况下使用该API,更不用说监控了。直到有一天,我突然发现服务器开始不稳定并且无论我怎么调整都没有恢复,最后关闭所有应用程序,可是服务器仍然没有恢复正常。

于是我想起了那个开放的API,我发现它在HackerNews、 Reddit和Twitter上都受到了不同的关注。当我关闭这个API入口并且服务器恢复正常的时候,我竟然收到邮件:“Hey,到底怎么了?我一直在使用那个API,你怎敢把它给关了呢?”

什么,你都没有告诉我在使用它,没礼貌的家伙!

当然,这并不是他们的错,虽然我留有开发账号,限流,使用配额诸如此类的信息在上面,但是开发人员更多是看到一个很酷的API,便开始使用它。

如何恰当的提供一个API?

Auth, by oztenphoto

正如上面提到的,需要准备许多东西,如果希望成为你和用户之间非常愉快的体验,尤其是对用户来说。其中一个方法是自己动手构建所有的基础设施——但这需要大量的时间而这并不是很性感的做法。专注于产品核心问题比确保其他的工作更重要。

幸运的是,目前已经有一些服务可以让API使用起来更简单更方便。

据我所知道有3scale,Mashape和Mashery。

基本上所有的这些服务都需要提供诸如:开发者密钥,一个主文档,执行速度限制、确保分配正确以及一系列分析工具等等。你需要提供一个像样的API服务不仅要让开发人员满意,还要让你的服务器也满意才行。

API的主要差异在与如何实现?当3scale在服务器端不停的问:“嗨,这个用户做的怎样?可以吗?好吗?”的时候,Mashape和Mashery仅提供一种代理工作机制,对用户进行保持跟踪并且只有在适当的时候才会发送请求。

这意味着你必须提供一些Mashape可以理解的标准,但很酷的是,他们会在客户端根据相应地平台自动创建一些库,并且他们是唯一的提供商,这样就可以采取收费措施,所以这样也就迎合了他们自己的想法,是不是很帅!

接下来,做一款炫的产品,提供API,并且让它得到关注吧。

设计公共API的六个注意事项相关推荐

  1. java api 设计_Java API设计实践

    使你的API在模块化和非模块化Java环境中都可用 在优锐课的java学习分享中,对微服务有了更深层次的新概念.关于API设计实践一点就通了. 介绍 了解设计Java API时应应用的一些API设计实 ...

  2. 我去头条面试,面试官问我如何设计好API,看看我是如何吊打面试官的!

    作者 | 点击关注 ???? 来源 | Java开发宝典(ID:javakaifabaodian) 头图 | CSDN 下载自东方 IC "语言首先是写给人看的,只是恰巧(incidenta ...

  3. 公共 API 的错误次数远超你想象!

    作者 | Matt Hawk 译者 | 苏本如,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 想知道API的使用在当今的软件开发过程中 ...

  4. BetaFlight模块设计之二十六:接收机任务分析

    BetaFlight模块设计之二十六:接收机任务分析 接收机任务 配置情况 硬件配置 软件配置 驱动配置 sbus驱动函数分析 sbusDataReceive函数 sbusFrameStatus函数 ...

  5. Button 的 进化之旅 | 我们是如何设计 Compose API 的 (下篇)

    本文由 Jetpack Compose 团队的 Louis Pullen-Freilich (软件工程师).Matvei Malkov (软件工程师) 和 Preethi Srinivas (UX 研 ...

  6. 如何更好的设计RESTful API(创建公开API)

    https://zhuanlan.zhihu.com/p/24592119?utm_source=tuicool&utm_medium=referral 作者:知秋z 链接:https://z ...

  7. 来自极客标签10款最新设计素材-系列十六

    本周我们推荐来自极客标签社区带来的10款免费设计素材,大家可以在这里免费下载你需要的内容.如果你也有更好的作品,欢迎分享到社区中来,在得到帮助的同时,也能与更多人分享来自你的作品. 免费图标:扁平风格 ...

  8. 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】

    题目要求: 设计一个魔方(六面)的程序. 题目分析: 把魔方从正面看展开成一个平面,如图1所看到的. 设计一个类.当中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面 ...

  9. api怎么写_月薪几十K 的人是怎么设计REST API

    前言 作为一名优秀的后端程序员,你照着产品需求设计好了模型,设计好了关联关系. 把这些模型和关系一再打磨了一番之后,你想是时候把API设计出来,与前端沟通了. 这时候问题来了: 一旦 API 进入前端 ...

最新文章

  1. Metadata GC Threshold导致的full gc分析
  2. C 这些东西的内存管理
  3. WPF 将Bitmapsource转换到Emgu.cv.image
  4. OpenStack云计算快速入门教程
  5. python3堆排序_python 堆排序
  6. nyoj-483--Nightmare--BFS+允许回头
  7. Linux的cp -a与cp -p
  8. rap技术原理_「水深坑多」做分子海绵,你还需要了解这些技术
  9. Mini 容器学习笔记6——组件的获取(应用)
  10. Cracer渗透-windows基础(系统目录,服务,端口,注册表)
  11. EasyNet.Solr 3.5.1发布及使用中的一些原则
  12. android之读取网络图片并显示
  13. python求解LeetCode 习题 Excel Sheet Column Title
  14. 10月15号和16号PC端云音乐项目总结
  15. html带圈的数字号码,html – 带有数字的CSS圈子
  16. Linux平台升级chrome浏览器后,再打开会提示:“您的个人资料来自新版 Google Chrome 浏览器,因此无法使用。某些功能可能无法使用。请指定其他个人资料目录,或使用新版本”
  17. c语言贺卡代码大全,C++实现新年贺卡程序
  18. DAEMON tools lite “至少SPTD ..与 Windows 2000或更高版本” 报错的解决
  19. HTML超链接、锚链接
  20. 渠道、数据、技术,谁才是网络信贷市场的决胜因素?

热门文章

  1. 【转】C# DataTable使用方法详解
  2. 【转】Web Reference和Service Reference的区别
  3. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。
  4. 一步步编写操作系统 13 栈
  5. python生成json_生成动态嵌套JSON对象和数组-python - python
  6. REVERSE-PRACTICE-BUUCTF-30
  7. Anaconda安装绘图模块altair
  8. 【HDU - 5492】Find a path(dp,tricks)
  9. 【CodeForces - 798A】Mike and palindrome (回文串,水题,字符串问题)
  10. php实现播放直播_PHP直播技术分享(一:实现直播)