【发布时间】:2011-07-27 02:13:08
【问题描述】:
我正在自己学习 php/xml/json 和其他所有内容,并且我正在通过 API 来处理某些事情。他们有文档,但我仍然不明白 API 是如何工作的。他们给你一个 GET 链接和 API 密钥,我知道你应该把 API 密钥放在请求链接中
我如何称呼这个链接?当它给你一个示例响应时是什么意思?
如果您的请求正确,响应应该出来吗?
我有点笨?
谢谢
【问题讨论】:
我正在自己学习 php/xml/json 和其他所有内容,并且我正在通过 API 来处理某些事情。他们有文档,但我仍然不明白 API 是如何工作的。他们给你一个 GET 链接和 API 密钥,我知道你应该把 API 密钥放在请求链接中
我如何称呼这个链接?当它给你一个示例响应时是什么意思?
如果您的请求正确,响应应该出来吗?
我有点笨?
谢谢
【问题讨论】:
在 PHP 中你可能有这样的东西:
// EDIT: only need to use urlencode() on user supplied variables
//$url = urlencode("http://xyz.com/api?apikey=foo&v1=bar&v2=baz");
$url = "http://xyz.com/api?apikey=foo&v1=bar&v2=baz";
$response = file_get_contents($url);
$response 将包含您访问 $url 时输出的任何 xyz.com 的字符串(如果您直接访问 $url,您会看到它)。
您的下一个工作是根据 $response 的数据结构(例如 XML、JSON 等)解析它,以便您的其余代码可以使用它。
有几个用于解析 XML 或 JSON 的 PHP 库。就个人而言,我更喜欢使用 PHP 5 >= 5.2.0 中包含的SimpleXMLElement 和json_decode()。
根据 API,如果它不理解请求 $url,它可能会向您发送某种错误代码/响应结构,您可以在解析响应后检查该请求。
如果 $response 返回 false,则通常与 $url 通信时出现错误。
我发现考虑这些XHR 请求的一种直观方式是将参数(GET 参数)传递给函数(API URL)。 API URL 的响应就像函数的 return 语句。
更新:
在 cmets 中由 OP 建议的 Groupon 的 API 示例:
$apikey = "client_id=abcd1234567890";
$division = "division_id=chicago";
$url = "http://api.groupon.com/v2/deals?" . implode("&", array($apikey, $division));
$response = file_get_contents($url);
$deals = json_decode($response, true);
foreach($deals['deals'] as $deal){
$format = 'Deal: <a href="%s">%s</a><br/>';
echo sprintf( $format, $deal['dealURL'], $deal['announcementTitle']);
}
上面的代码将打印出芝加哥地区所有交易标题和网址的列表。如果您查看 Groupon API 页面上的 Sample JSON Response 部分,它将为您提供将映射到关联数组 $deals 的整个数据结构。
如果 API 的任何 GET 参数是由用户提供的(例如,来自网络表单),您将需要执行类似 $division = "division_id=" . urlencode($user_input); 的操作。
【讨论】:
urlencode() 的错误。它将& 更改为%26。不过,您希望将其应用于传递给$url 的所有用户提供的值。至于您的特定 API 请求,您使用的是哪一个?大多数 API 只返回文本。