在网上创建API意味着什么?

时间:2011-06-02 21:30:10

标签: c# asp.net asp.net-mvc web-services api

我有一个在ASP.NET MVC中构建的站点,并使用大量的jQuery客户端交互来构建实时聊天室。许多用户解析了javascript并找到了它发布到的URL以便与聊天进行交互。他们开始制作机器人,以便在聊天频道中玩游戏。

这些用户不断要求提供“API”,以便他们更轻松地进行编码。我以为我知道什么是API,但我想我还是有点模糊。 API不是第三方可以与之交互的任何接口吗?

为我的网站构建Web API意味着什么?它只是一个包含URL列表以及如何与它们交互的文档吗?

我也听说过网络服务和网络参考。这些是什么?构建Web服务意味着什么?这与网络上的API有什么关系吗?

5 个答案:

答案 0 :(得分:5)

API实际上是一个“应用程序编程接口”。在最基本的层面上,任何接口都是为其他软件与其进行交互或通信而设计的。从某种意义上说,您的开放URL是API。当然,作为用户界面的入口点通常不能很好地用于编写其他软件,因此虽然它们是API,但它们可能不是非常好的 API,您可能会很快发现自己遇到性能问题。

Web API是在Web服务器上运行的应用程序的入口点,允许其他工具以某种方式与该Web服务进行交互。可以将其视为软件的“用户界面”。但是,您的软件需要适当的安全性和访问控制。考虑速率限制,或者您冒着充满侵略性的机器人的风险。但是,速率限制也需要在人类的用户界面中 - 或者有人会简单地针对它编写脚本。

Web服务是在面向Internet的服务器上运行的任何应用程序,可以通过Internet进行交互,通常使用API​​,允许其他基于Web的实用程序将您的服务用作其功能的一部分。

最终,任何 Web API都是一个URL列表以及如何与它们进行交互。现代Web API设计几乎总是涉及身份验证和安全令牌(您应该研究Twitter等使用的OAuth身份验证模型),并且有多种竞争标准用于发送数据,其中JSON是一个更受欢迎的选项。记录你的界面确实把它变成了一个API,但你可能想花一些时间来决定这是否真的是软件与你的web服务交互的“正确”方式 - 一旦你发布了API,改变它会破坏任何东西取决于您的服务!

答案 1 :(得分:4)

API或应用程序编程接口是一组用于外部程序与应用程序交互的已建立协议。正如您所说,用户解析了javascript并发现了您使用的URL,然后使用这些URL构建程序与您的应用程序进行交互。

从技术上讲,你已经有了一个API,并且他们已经发现了它 - 这一组URL控制打开聊天室,发布到房间,阅读其他人的帖子。但是,您的用户要求的是一组更加成熟,结构化的方法。

此类方法可能包括对应用程序的身份验证形式,以及从应用程序传递回外部程序的消息和/或数据,从而允许外部程序知道其请求发生了什么(而不仅仅是HTML返回,或者根本没有) - 比如“成功”,或“错误”,“不能再试”等等。

答案 2 :(得分:2)

它将是一组提供ASP.NET MVC接口的函数。功能包括“开始聊天”或“发送消息”。它还会涉及一些安全调整,让其他用户访问您的服务器。

答案 3 :(得分:1)

他们要求制作他们的机器人发布的网址,非常明确,并且明确定义他们的工作。

通常,这些“web api”会在POST中使用结构化数据,或者在GET中使用CGI变量,而不是返回HTML,而是返回XML或json或其他一些编程友好的返回数据。

这就是它的要点!

答案 4 :(得分:1)

最简单的形式是,你可以在你的倒数第二段做你建议的事情并记录你已经使用过的API(因为听起来他们已经在某种程度上使用了你的“内部”API)。

但是,如果你想“正确”地做到这一点,你可能需要回过头来看看你写的代码,并找到方法让它对第三方更加用户友好,并且可能,如果你要让人们更容易使用它,那就“加强”它对抗攻击。