适用于非基于Web的应用程序的REST类型API,这是一个好主意吗?
我们正在开发一种C ++和Java中间件SDK,例如,游戏开发人员,动画软件开发人员,Avatar开发人员将其用作库/ DLL,以增强其产品。
使用对特定功能的特定调用创建了典型的API之后,我正在考虑通过使用REST类型的API(GET,PUT,POST,DELETE)或者CRUD类型(CREATE,READ,UPDATE,DELETE)接口来简化API。
这将以类似于客户端-服务器类型REST API的方式工作,其中只有4个可能的API调用,但是这些调用可以采用灵活的参数。
这样做似乎具有使API稳定的好处,因为不会添加新的调用,也不会删除旧的调用。因此,使用此API的用户不必担心必须重新编译和更改其代码以适合我们的中间件的任何更新。
开销是中间件控制器中有一个额外的重定向层来路由API调用,并且开发人员需要知道每个REST调用可以使用哪些参数(当然是提供的)。
到目前为止,我还没有看到此系统在Web类型的客户端服务器应用程序之外使用,所以我的问题是:这可行吗?
我在考虑其效率以及例如游戏开发人员会发现它易于使用方面。
解决方案
回答
是的,这是一个可行的想法。但是我不确定收益是否会证明成本合理。 REST最好应用于针对请求和响应的网络应用程序场景。尽管统一接口具有明显的学习曲线优势,但是这些优势几乎可以在任何提供合理抽象过程的,精心设计的API中体现。
我们还对游戏开发人员是否会发现易于使用的RESTful API表示关注。我会怀疑的。我已经实现了许多RESTful Web服务,并帮助许多开发人员加快了构建和使用它们的速度,而掌握REST所需的概念上的飞跃对于那些多年沉迷于过程API的人而言可能是巨大的。我认为特别是游戏开发人员将与程序API紧密相连,以至于试图采用不同的范式,无论其带来什么好处,都可能会变得异常困难。
回答
请记住,REST不是特定于HTTP的,并且不仅仅依赖于4个HTTP动词。我们拥有和可以使用的动词取决于我们使用的协议。