【问题标题】:What should I know about API's?关于 API,我应该了解什么?
【发布时间】:2010-11-27 16:50:33
【问题描述】:

我想要的和拥有的

我愿意创建一个API,我已经知道 API 代表什么。 我使用 PHP 作为服务器端语言。

但是,我并不真正了解 API 如何从头开始工作,以及如何让用户在我创建 API 后使用它。

我的想法和了解

现在,我认为使用 API 可以让开发人员访问我的数据库并请求查询。但是那我为什么要为它创建一个完整的语言呢?为什么他们不能使用PHP 或任何其他服务器端语言?

正如我所见,为网站创建 API 的公司需要注册才能向开发人员提供 API KEY。开发人员是否通过API KEY 登录数据库?如果是,那为什么他们也没有密码?如果我知道某人的 API KEY,我可以使用它还是什么?

正如我所读/听说的,XML 与 API 有某种关联,但为什么以及如何?

另外请在您的回答中考虑我不想使用任何框架或类似的东西,我想从头开始,所以我想了解它是如何从 A 到 Z 工作的。

【问题讨论】:

  • 您应该删除 API 代码样式,因为这使它看起来像您问题中的流行语。此外,您实际上是在询问“Webservice RPC”接口。另外,尝试列举您的多个问题;可能会产生更好的解释。

标签: php api


【解决方案1】:

API 实际上只是您公开公开的方法。例如,假设您有一个博客站点。您希望您的成员能够在不实际访问您的站点的情况下发布博客条目 - 登录、填写表格等。 也许他们想创建一个 Android/IPhone 应用程序来发布到您很酷的博客网站。您可以允许他们这样做。

为此创建一个 API:

    <?php
        function createBlogEntry(memberEmailAddress, memberPassWord, BlogTitle, BlogBody)
        {

           //Here you would usually call an internal (or not publicly exposed) method that
           //contains the actual logic to insert. Like Jim's answer states, you just want 
           //people to be able to performan action in your system, you don't want them to see HOW you do it.

          encapsulatedBlogCreation(memberEmailAddress, memberPassWord, BlogTitle, BlogBody);  


           //This is where API's get tricky. I need to return to the user the result of
           // the save so that my user knows what happens. In my API documentation, I 
           //tellthe user 0 = Created Successfully. If this is a READ operation
           //just return the result. Most modern programming languages also have
           //a way to capture an HTTP response - so dealing with the return is their responsibility

            return 0;
        }
 ?>

几件事:

  • 在我的 API 中,我不需要开发人员密钥,我允许用户传递他们的登录凭据。 API 密钥做同样的事情,它唯一地标识一个请求并将其链接到系统中的用户。
  • 此 API 不使用 XML。这和 api 一样简单。这可以通过发送可以使用任何现代编程语言完成的 HTTP 请求来调用。假设我将上面的代码放在一个名为 blog.php 的文件中,并将它放在我博客站点的根目录中。我会这样称呼它:

*http://myblogsite.com/blog.php?memberEmailAddress=myEmal@example.com&memberPassWord=myPass&BlogTitle=Title-of-post&BlogBody=the_blog_post_is_here*

您需要了解的一件事是,必须需要 API。您可以公开一种方法来创建博客条目,但如果没有人知道或使用它 - 它毫无价值。 API 需要进行记录、宣传,并为潜在用户提供好处。

【讨论】:

  • 感谢您的回答,好的,我可以创建人们可以使用的功能,但是如果他们无权访问我的数据库,他们如何使用它?我应该给他们我的数据库连接详细信息(用户名、密码)吗?如果他们自己的机器上没有我的函数,他们怎么能在 PHP 中使用它呢?我是否需要给他们一个包含功能等的文件,例如 YouTube API?
  • 哇,这正是我想知道的,即使我不知道我想要什么 xD,LINK 天哪,这种方式太合乎逻辑了……:D 谢谢!
  • @CIRK - 我更新了答案。基本上,您让它们传递执行操作所需的所有内容。他们不需要你的连接细节(我希望他们没有),因为你会将他们给你的东西传递到你的程序中——你的程序知道如何连接到数据库。实际的数据库连接,数据库插入发生在“encapsulatedBlogCreation()”内。此方法位于另一个未公开公开的文件中 - 并包含数据库连接字符串和插入博客条目的逻辑(即 SQL 查询)。
  • @cinqoTimo 非常感谢!还有一个问题,当用户从数据库中请求某些东西而不是插入或删除时,我应该如何给他们数据结果?我认为 XML 来了,但是任何事情都应该是好的,但是我应该如何将页面中的信息返回给请求者?
  • @CIRK - 添加退货声明(以上更新)。如果您要返回一个博客条目而不是创建它,它看起来是一样的。这种类型的 Web 服务返回原始数据 - 只是一个整数作为代码,让用户知道发生了什么。如果您希望 API 返回整个博客条目(BlogId、BlogTitle、BlogDate、BlogBody),则需要结构化数据。这就是为什么你在这里使用 XML,因为它是返回结构化数据的标准方式。
【解决方案2】:

API 基本上是允许其他程序员访问您的程序的任何接口。您可能想坐下来思考您希望其他人能够做什么。出于几个(希望是显而易见的)原因,您通常不想让其他开发人员纯粹访问您的数据库。

API 密钥通常用于控制对 API 的访问,这些密钥可以与方法调用一起发送,以确保只有您想要授予访问权限的人才能访问。它们基本上是密码。 阅读wikipedia entry 可能会让事情变得更清楚。

【讨论】:

    【解决方案3】:

    API 代表 应用程序编程接口,我们可以将其视为一组库,这些库由您可以反复重用的函数组成。例如,WIN32 API 是为应用程序与操作系统交互的一组函数(用 C/C++ 开发)组成的,该 API 包括以下库:kernel32.dll、advapi32.dll、gdi32.dll、user32.dll 、comctl32.dll、shell32.dll。

    您还应该知道其他一些术语,例如toolkit and framework,以便确定您想要做什么。通常 API 是用 C/C++ 编写的,并且在大多数情况下会重新使用操作系统 API 提供的功能。

    【讨论】:

    • 非常感谢您的回答,我的意思是网络 API :) 但很高兴知道操作系统的工作原理就像网络一样。
    • 此答案仅适用于反映他/她经验的一小部分 API。
    • @cinqoTimo:我说的是操作系统 APIS,其中也包括 Web 服务器端 APIS。特别是在服务器端使用 PHP 创建用于交换信息的 API 与创建基于 WebServices、XML-RPS 或 SOAP 的服务有关。 PHP 通过 xmlrpc 扩展提供对两者的访问,该扩展基于 xmlrpc-epi 项目 [xmlrpc-epi.sourceforge.net],它是用 C 编写的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多