gpt4 book ai didi

api - 语言无关 API

转载 作者:行者123 更新时间:2023-12-04 01:55:40 53 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




我正计划建立一个网络服务,或通过互联网公开的一些其他服务。我想为应用程序创建一个 API 以与此服务交互。我希望 API 可以在不同的语言中使用,例如 Java、C++、C# 或 PHP。如何为我的 API 维护一个代码库,同时为所有这些语言分发漂亮的打包二进制文件?另外,我可能想考虑这也可能是跨平台的。

更新 1

I'm early days on Web Services, but I think one of the key points is that lots of tooling supports the implementation of clients based on the description of the service like WDSL. I've not delivered any client-side software with anything I've done, I expect any user to be able to build their own clients suited to their needs. --Brabster's Answer



我不反对将其作为一个直接的 Web 服务,然后提供一个 WSDL 文件。但是如果我想让客户端 API 做一些逻辑、加密、错误检查等等呢?

更新 2

As far as expecting the client that is using your API to do anything, you can't! There is nothing you will be able to do to ensure that the consumer of the API will do anything right. That's why robust error handling is so important. You must check and double check any and everything that comes from the client. You must always be suspicious of it, and even assume that it is malicious. There really is no good way around that fact. --Ryan Guill's Answer



我最初的想法是在 .NET 中创建一个 DLL 或程序集,然后客户端正在调用运行客户端的这段代码。此代码可以通过任何通信协议(protocol)与服务器通信,但我的 API 将在他们的机器上运行。我猜 REST 并没有真正做到这一点。似乎在 REST 中,一切仍然是 HTTP 帖子。它几乎是没有肥皂的网络服务。

更新 3

我已经接受了 Ryan Guill 的回答。我认为一般的想法是我需要公开某种网络服务,对客户端的障碍最低。这样任何人都可以连接。然后让我的所有代码在服务器上运行。这似乎被认为是真正实现我所追求的平台和语言独立性的唯一愿望。

感谢所有的投入。

最佳答案

我会使用 REST API,类似于 Flickr 的 API 的工作方式:http://flickr.com/services/api/

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

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

更多信息在这里:http://www.xfront.com/REST-Web-Services.html

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

I am not opposed to making it a straight web service then giving out a WSDL file. But what if I want the client API to do some logic, encryption, error checking or so on?



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

更多使用 REST 编写的公共(public) API 示例: twitter , vimeo , Google

至于期望使用您的 API 做任何事情的客户端,您不能!您无法做任何事情来确保 API 的使用者会做任何正确的事情。这就是强大的错误处理如此重要的原因。您必须检查并仔细检查来自客户的所有内容。你必须始终怀疑它,甚至假设它是恶意的。这个事实真的没有什么好的办法。

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

My original idea was to create a DLL or Assembly in .NET, then the client is making calls into this code that is running client side. This code may talk via any communications protocol back to the server, but my API would be running on their box. I guess REST does not really accomplish this. It seems like in REST everything is still an HTTP post. It is almost web services with out soap.



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

但是您说 REST 有点像没有 SOAP 的 Web 服务有点正确。从技术上讲,REST 也是 Web 服务,只是 Web 服务通常意味着 SOAP。这确实是实现相同目标的不同方式。最大的区别在于,虽然它需要更多的编程和思考(可能在客户端需要更多的编程),但是你用它来换取健壮性、消费者和服务器的开销更少,以及 API 的尽可能广泛的受众.它确实是最小的公分母。

关于api - 语言无关 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440688/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com