设计公共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…

IntelliJ Idea 2017 免费激活方法

见:https://www.cnblogs.com/suiyueqiannian/p/6754091.html 1. 到网站 http://idea.lanyus.com/ 获取注册码。 2.填入下面的license server: http://intellij.mandroid.cn/   http://idea.imsxm.com/   http://idea.iteblog.com/key.php 以上方法验证均可以

P3193 [HNOI2008]GT考试

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

LeetCode刷题攻略

目录 一、LeetCode简介 二、刷leetcode的主要目的 三、常用的数据结构 四、常用的算法思想 五、选择算法题 1、刷题选择 2、刷题方法 方法一:顺序法 方法二:标签法 方法三:随机法 方法四:必杀法 六、刷题攻略 TIP 1&…

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发行版更有优…

C#动态操作DataTable(新增行、列、查询行、列等)

public void CreateTable(){//创建表DataTable dt new DataTable();//1、添加列dt.Columns.Add("Name", typeof(string)); //数据类型为 文本//2、通过列架构添加列DataColumn age new DataColumn("Age", typeof(Int32)); //数据类型为 整形DataColumn…

使用IntelliJ IDEA 配置Maven(入门)

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

[算法]不使用*、/、+、-、%操作符求一个数的1/3

摘要:算法一直是程序员进阶的一道龙门,通常算法都是为了更高效地解决问题而创造的,但也有的只是出于学术性,并不在意其实际意义。这是近日在国外技术问答网站stackoverflow的一个热门问题,不知道你能给出几种解决方法&…

2022届互联网秋招备战

文章目录1、何为秋招?1.1应届生身份1.2秋招、春招、校招1.3、社招、海投2.秋招信息如何获取?3、如何备战秋招?3.1、简历(ps做简历)3.2、笔试准备3.3、面试准备4、日常实习和暑假实习?1、春招≠暑期实习2、什…

php 两变量值互换 方法

//方法一:$a "abc";$b"def";$a $a^$b;$b $b^$a;$a $a^$b;//方法二:list($a, $b) array($b, $a);//方法三:$a $a . $b;$b strlen( $b );$b substr( $a,0,(strlen($a)- $b ));$a substr( $a, strlen($b));//方法四&…

MySQL5.7 group by新特性,报错1055

项目中本来使用的是mysql5.6进行开发,切换到5.7之后,突然发现原来的一些sql运行都报错,错误编码1055,错误信息和sql_mode中的“only_full_group_by“关,到网上看了原因,说是mysql5.7中only_full_group_by这…

IDEA中多行注释及取消注释快捷键

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、一次性添加多行注释的快捷键 首先选中要注释区域,然后 ctrl/ 这个是多行代码分行注释,每行一个注释…

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

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

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协议的内容着实是十分复杂的,涉及到十分多互联网"底层"框架的东西。今天就先撇开这部分详细内…

【最新版】Java速成路线(急于找工作!)

文章目录计算机网络分层结构TCP/UDPHTTP/HTTPS状态码Cookie 和 SessionURI和URL操作系统线程和进程数据结构和算法数据结构算法设计模式(23种)单例工厂代理适配器观察者模板实操工具Git/SVNMaven/GradleLinux基本操作NginxELKpostmanJAVA基础语言基础JVM…

Java Web Start实例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 JWS让用户可以下载服务器端的Java Application到本机运行,并且没有安装、配置等繁琐的操作JWS的运行原理:浏览器…

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

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

互联网大厂项目研发流程

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