语言不可知API

语言不可知API,api,Api,我正计划建立一个web服务,或者通过internet公开的其他服务。我想为应用程序创建一个API来与此服务交互。我希望API可以用java语言、C++语言、C语言或PHP语言来使用。如何为我的API维护一个代码库,但为所有这些语言分发漂亮的打包二进制文件?另外,我也可能认为这也可能是跨平台的。 更新1 我对Web服务的了解还很早,但我 我认为其中一个关键点是 大量的工具支持 基于 服务的描述,如WDSL。 我没有提供任何客户端服务 软件与我所做的任何事情,我 希望任何用户都能够构建 他们自己的客

我正计划建立一个web服务,或者通过internet公开的其他服务。我想为应用程序创建一个API来与此服务交互。我希望API可以用java语言、C++语言、C语言或PHP语言来使用。如何为我的API维护一个代码库,但为所有这些语言分发漂亮的打包二进制文件?另外,我也可能认为这也可能是跨平台的。

更新1


我对Web服务的了解还很早,但我 我认为其中一个关键点是 大量的工具支持 基于 服务的描述,如WDSL。 我没有提供任何客户端服务 软件与我所做的任何事情,我 希望任何用户都能够构建 他们自己的客户适合他们的 需要--布拉斯特的回答

我并不反对让它成为一个直接的web服务,然后给出一个WSDL文件。但是,如果我希望客户端API执行一些逻辑、加密、错误检查等操作,该怎么办

更新2

就期望客户 使用API做任何事情,您都可以 不能你什么都不会成为 能够做到确保消费者 API的应用程序将做任何正确的事情。 这就是为什么健壮的错误处理如此重要 重要的。你必须检查并加倍 检查所有的东西 从客户那里。你必须永远是 对此表示怀疑,甚至认为 这是恶意的。真的没有 这是个好办法--瑞安·吉尔的回答

我最初的想法是在.NET中创建一个DLL或程序集,然后客户端调用运行客户端的代码。这段代码可以通过任何通信协议返回到服务器,但是我的API将在它们的机器上运行。我想REST并不能真正做到这一点。在REST中,似乎一切都仍然是HTTP post。它几乎是没有soap的web服务

更新3

我接受了莱恩·吉尔的回答。我认为一般的想法是,我需要公开某种网络服务,对客户端的屏障最低。这样任何人都可以连接。然后让我所有的代码都在服务器上运行。这似乎是我唯一想要真正实现平台和语言独立性的目标


感谢所有的投入。

我对Web服务的了解还很早,但我认为其中的一个关键点是,许多工具支持基于WDSL等服务描述的客户端实现

我没有用我所做的任何事情交付任何客户端软件,我希望任何用户都能够构建适合自己需要的客户端


如果您按照其他答案之一的建议查看flickr API,我认为他们不提供客户端代码,其他人已经构建并贡献了客户端内容。

我会使用REST API,类似于flickr API的工作方式:

它的创建和维护相当简单,最大的缺点是它需要大量的文档(但几乎任何使用API的方式都会遇到这个问题),并且必须进行健壮的错误处理

但在我看来,这是创建最接近跨平台/跨语言的API的最佳方式

更多信息请点击此处:

更新:提交者在帖子中添加了以下内容:

我并不反对让它成为一个直接的web服务,然后给出一个WSDL文件。但是,如果我希望客户端API执行一些逻辑、加密、错误检查等操作,该怎么办

我个人不喜欢使用SOAP(使用WSDL)。在服务器和客户机上使用SOAP都有很多固有的开销。我认为这就是为什么越来越多的公共API使用REST编写。它确实将进入的障碍降低到了最低公分母,允许任何可以使用基本HTTP的东西(GET和POST(也可以使用PUT和DELETE,以“正确”的方式)使用API

更多使用REST编写的公共API示例:

至于期望使用您的API的客户端做任何事情,您不能!您无法确保API的使用者做任何正确的事情。这就是为什么健壮的错误处理如此重要。您必须检查并再次检查来自客户的任何内容。你必须始终怀疑它,甚至认为它是恶意的。事实上没有什么好办法可以回避这个事实

更新2:提交者在帖子中添加了以下内容:

我最初的想法是在.NET中创建一个DLL或程序集,然后客户端调用运行客户端的代码。这段代码可以通过任何通信协议返回到服务器,但是我的API将在它们的机器上运行。我想REST并不能真正做到这一点。在REST中,似乎一切都仍然是HTTP post。它几乎是没有soap的web服务

您当然可以做到这一点,但这只适用于.NET语言,这意味着您的跨平台和跨语言优势是不可能实现的。最后,你真的在阻止什么吗?开发人员将使用远程API或本地DLL或程序集。无论哪种方式,他都必须知道如何使用它,并正确使用它,否则您将抛出一个错误。您真正要做的就是更改抛出错误的位置。这可能对你很重要(如果是,请说明原因),但实际上并没有改变等式中的任何东西

但是,您说REST有点像没有SOAP的web服务,这是正确的。从技术上讲,REST也是web服务,只是web服务通常意味着SOAP。这真的是实现同一目标的另一种方式。最大的区别在于,它需要更多的编程和思考(以及潜在的更多公关)