【问题标题】:What does it mean to create an API on the web?在 Web 上创建 API 意味着什么?
【发布时间】:2011-09-07 09:59:20
【问题描述】:

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

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

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

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

【问题讨论】:

  • API 通常是开发人员与应用程序交互的文档化方式。它通常提供通过 URL 使用 get 请求来发送和获取数据的功能。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 听起来我非常正确。这是一个非常有用的答案。实际上,我已经使用了身份验证、垃圾邮件预防,甚至返回了格式良好的 JSON。我可能会整理一些东西并做好记录,然后将信息发布给他们。好东西,非常感谢!
  • 太棒了,听起来您已经解决了大部分难题!你是对的,文档就是你所需要的,如果你在没有 web API 设计基础培训的情况下正确地解决了所有这些问题,你对它有很好的直觉,并且可能会继续在设计和实现方面取得巨大成功网络服务。
  • 好吧,我的想法是让数据变得简单,这样服务器就不会强制甚至暗示使用数据,这取决于客户端代码。我想我只是没有意识到我在这个过程中构建了一个像样的 API。再次感谢。
【解决方案2】:

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

从技术上讲,您已经拥有一个 API,并且他们已经发现了它 - 控制打开聊天室、向聊天室发帖、阅读他人帖子的一组 URL。但是,您的用户需要的是一套更成熟、更有条理的方法来执行此操作。

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

【讨论】:

【解决方案3】:

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

【讨论】:

  • 那么这只是一个 URL 列表以及它们期望的参数吗?
  • ^^^ 是的。正是如此,定义明确的 URL 可以做有用的事情。
  • 答案取决于你的后端。你的交流是用 URL 完成的吗?另一件事是如何让其他人与您的后端交互。
  • 是的,我是通过 URL(mvc 中的操作方法)完成的,这些方法返回客户端可以使用的 JSON 数据。
【解决方案4】:

他们要求让他们的机器人发布到的 URL 非常清晰且明确定义他们所做的事情。

通常,这些“Web api”在 POST 中获取结构化数据,或在 GET 中获取 CGI 变量,并且不返回 HTML,而是返回 XML 或 json 或其他一些编程友好的数据。

这就是它的要点!

【讨论】:

  • 太棒了。现在更有意义了。我实际上已经从我现有的 API 返回 JSON,所以很高兴知道。对 Web 服务是什么有任何想法?
【解决方案5】:

在最简单的形式中,您可以按照倒数第二段中的建议进行操作,并记录您已经在使用的 API(因为听起来他们已经可以在一定程度上使用您的“内部”API)。

但是,如果您想“正确”地执行此操作,您可能需要返回并查看您编写的代码,并找到使其对第三方更加用户友好的方法,并且可能还需要如果您要让人们更容易使用,请“强化”它以抵御攻击。

【讨论】:

  • 有道理。凉爽的。那么什么是网络服务?有区别吗?我的聊天 API 也是网络服务吗?
  • 好吧,我想 Web 服务既有通用上下文(是的,您的 API 是 Web 服务),也有更具体的上下文(当谈到 WCF Web 服务之类的东西时)。在后一种情况下,Web 服务只是通过 Web 执行 API 的一种方式。
猜你喜欢
  • 2014-09-30
  • 2020-06-05
  • 2023-03-10
  • 2013-10-26
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多