设计公共API的六个注意事项

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go 交叉编译

golang中windows交叉编译 env GOOSlinux GOARCHamd64 go build .打包镜像 FROM alpineMAINTAINER "congge"ADD ./casino_niuniu /usr/local/casino_niuniu/bin/casino_niuniu ADD ./templates /usr/loca/lcasino_niuniu/bin/templates ADD ./public /usr/local/casin…

P3193 [HNOI2008]GT考试

传送门 容易看出是道DP 考虑一位一位填数字 设 f [ i ] [ j ] 表示填到第 i 位,在不吉利串上匹配到第 j 位时不出现不吉利数字的方案数 设 g [ i ] [ j ] 表示不吉利串匹配到第 i 位,再添加一个数字,使串匹配到第 j 位的方案数 那么方程显然为…

SQLserver数据库反编译生成Hibernate实体类和映射文件

一、建立项目和sqlserver数据库 eclipse,我使用的版本是neon3 二、Data Source Explorer 选择OK 在data source Explorer的Database Connections 选择New 填写好General的连接信息 新建New Driver Definition 填写完选择OK 选择刚才的Drivers Test Connetion测试 N…

最受欢迎的5大Linux发行版

摘要:要统计有多少人在使用那款Linux发行版几乎是不可能的事情,但我们可以使用一些在线分析工具来大概地看看哪些Linux发行版更受欢迎。 Google Trends的数据显示,Ubuntu用户正在流向Mint,但依然在各方面都比其它Linux发行版更有优…

使用IntelliJ IDEA 配置Maven(入门)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置本地仓库路径 3.配…

为什么程序员不擅长估算时间?

摘要:时间估算是困难的,每一个程序员都有一个现实的估计区间,低于这个区间的估计意味着(构件,测试,检查代码的)时间开销被低估了,超过这个区间的估计意味着这个任务太大而很难预估。…

red hat enterprise linux 7关闭防火墙的方法

2019独角兽企业重金招聘Python工程师标准>>> red hat enterprise linux 7发布后,发现防火墙也变了,如何关闭防火墙呢,下面是方法 1.查看firewall的状态 [rootsztech7 ~]# systemctl status firewalld firewalld.service - firewal…

IOS —— 网络那些事(上) - http协议

作为一名并不太合格的程序员,今天要分享学习的成果,竟然讲的是网络相关HTTP协议的事情。(也算是复习了) 乍看HTTP协议的内容着实是十分复杂的,涉及到十分多互联网"底层"框架的东西。今天就先撇开这部分详细内…

老派程序员——徒手实现伟大成就

摘要:本文介绍了三位非常著名的程序员:Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他们是如何发明一门新语言,他们开发软件时会像我们一样使用当今流行的开发工具吗?当读Peter Seibel的精彩著作《编程人生:15位软件…

互联网大厂项目研发流程

文章目录阶段一:阶段二:阶段三:阶段四:阶段五:开发人员:测试人员:设计师:阶段六:阶段七:总结:本文章学习自:https://www.bilibili.com…

解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错:Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神说】JVM

文章目录1.JVM的位置2.JVM的体系结构3.类加载器4.双亲委派机制(重要)5.沙箱安全机制(了解)6.native(核心)7.PC寄存器(了解)8.方法区9.栈10.三种JVM11.堆(Heap)12.新生区、老年区13.永…

我们真的需要统一的编程规范?

摘要:仁者见仁智者见智,编码风格的不同,对项目也会有不同的影响,统一的编码规范有益于项目的维护。俗话说,没有规矩不成方圆,在2004年,UNIX创始人之一的Ken Arnold就发表了一篇很幽默文章&#…

百度云重磅发布ABC 3.0 尹世明如何诠释百度云的“新”打法

雷锋网9月4日消息,2018百度云智峰会正式召开,百度总裁张亚勤发表题为《新技术驱动,全面进入Cloud2.0》的演讲并表示,经历了PCClient/Server到MobileCloud 1.0,再到如今的AICloud 2.0过程,新技术推动云计算产…

开发人员眼中最好的代码编辑器是谁?

摘要:对开发人员来讲,开发工具就好比战场上的“兵器”,不同领域的开发人员他们所使用的“兵器”也不完全相同,本文从友好性、功能性、扩展等多方面总结了最受开发人员欢迎的“兵器”。你最爱的那个在这里吗? 如果我们把…

【老杜】MySQL—day01

文章目录day01课堂笔记1、数据库概述及数据准备1.1、什么是数据库1.2、什么是数据库管理系统1.3、SQL概述1.4、安装MySQL数据库管理系统。1.4、MySQL数据库的完美卸载!1.5、MySQL的服务1.6、用命令来启动和关闭mysql服务1.7、登录mysql数据库2、MySQL常用命令&#…

【转载】DRuid 大数据分析之查询

转载自http://yangyangmyself.iteye.com/blog/23217591、Druid 查询概述上一节完成数据导入后,接下来讲讲Druid如何查询及统计分析导入的数据。Druid的查询是使用REST风格的HTTP请求查询服务节点(Broker、Historical、Realtime),这…

记录 Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentExce

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如题: Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentException: Pa…

Springsecurity之AuthenticationProvider

2019独角兽企业重金招聘Python工程师标准>>> 注意:AuthenticationProvider与Authentication紧密联系,关于Authentication,看我的这篇博客。 先上一张图,如下图1 图1 AuthenticationProvider的类图 AuthenticationProvi…

Postman使用入门

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Postman测试管理的单位是测试集(Collections),测试集内可以创建文件夹(Folder)和具体的请求(Requests…