【问题标题】:Using Delete call through API in PHP在 PHP 中通过 API 使用 Delete 调用
【发布时间】:2010-08-17 18:17:58
【问题描述】:

我们有一个由第 3 方开发人员设计的 wiki。我们遇到的问题是,被设为“非活动”的用户仍然出现在搜索中。阻止用户被看到的解决方法是删除与该用户关联的属性。

要访问用户属性,我们将调用 api 并传递一个 url 编码的用户名,格式如下:http://www.ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties

这将返回包含属性项的 XML。

下一步是我不确定如何进行。我们需要以某种方式遍历所有属性并获取属性的名称,以便我们可以通过 API 调用 Delete 来删除它们。删除的格式为 DELETE:users/{userid}/properties/{key}

理想情况下,一旦我们有一个工作脚本,最好将用户名作为参数传递。

我对在 PHP 中使用 API 有点陌生,所以如果有人对此有一些想法或可以提供帮助,我将不胜感激。

请查看此链接以下载属性 xml 文件: http://queencitytech.com/properties.zip

以下是检索用户属性后返回的内容:

12010-04-29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohnh2010-04-29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn2010-04 -29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngSmith2010-04-29T04:39:30ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngSmith, John2010-04-29T04:39:30ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn2010-04-29T04:39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png757E2010-04-29T04: 39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png分机: 61322010-04-29T04:39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn_Smith@ourwiki.com2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngmiddleware/ images/headshots/01_799/01_799_hs.jpg2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngmiddleware/images/lifestyle/01_799/01_799_ls.jpg2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp: //www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngImplementation2010-04-29T04:39:33ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d156332bcd5e5746 T2010-04-29T04:39:33ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngCo-op2010-04-29T04:39:34ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png0000-00- 00 00:00:002010-04-29T04:39:34ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngCoop2010-05-02T04:40:35ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngfalse2010- 05-03T19:09:34ZJohn_Smith@ourwiki.comJohn_Smith@ourwiki.comJohn_Smith@ourwiki.com52909eac4d19209592168dc96f3d4fcahttp://www.avatar.com/avatar/52909eac4d19209592168dc96f3d4fca.pngCincinnati2010-05-14T04:15:13ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/头像/0ee8d636cdd5e57469516332b9325cbc.png4572010-07-16T04:50:13ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e570374695162320-bc9 16:06:232010-07-16T04:50:17ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png

这里是包含 var_dump(array($delete, $property))的文件 http://queencitytech.com/deletescript.php.html

【问题讨论】:

  • 我假设您需要粘贴一些 XML...
  • 对不起,上面我添加了获取用户属性后返回的内容
  • 这不是 XML。或者你在第一个实例中弄错了,那是实际的反应?你必须为我们破译。
  • 我是个白痴。我只是在上面提供了一个可以下载 xml 的链接。文件已压缩。我能够打开它并看到 xml。

标签: php xml api


【解决方案1】:

假设您将 XML 存储在变量名称 $xmlString 和变量 $user_id 中的用户 ID 中,您可以使用以下代码:

$delete = "http://www.ourwiki.com/@api/DELETE:users/$user_id/properties/%s";
$xml = new SimpleXMLElement($xmlString);

foreach($xml->property as $property) {
  $name = $property['name']; // the name is stored in the attribute
  file_get_contents(sprintf($delete, $name));
}

或者,如果您知道所有可能的属性,那么拥有一个无需事先读取属性即可一次性完成所有这些调用的函数会更容易。

$properties = array(); // array of property names
$delete = "http://www.ourwiki.com/@api/DELETE:users/$user_id/properties/%s";

foreach($properties as $property) {
  $name = $property['name'];
  file_get_contents(sprintf($delete, $name));
}

【讨论】:

  • 谢谢,我会试试这个。显然,当调用 /properties 时,它将列出与用户关联的所有属性。用户属性是键值,其中键和值可以是任何值,因此遗憾的是无法知道所有选项。
  • 我知道我需要获取我认为通过调用 api (ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties) 完成的 XML 但我将如何获取该响应并将其存储在变量中?如果用户可以输入电子邮件并调用获取 xml 并执行删除,那就太好了。
  • 通过调用file_get_contents('ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties') 将返回XML,之后您可以将其传递给SimpleXMLElement 类。
  • 好吧,我可以将它分配给 $xmlString 并且 SimpleXMLElement 应该能够读取它?
  • 添加一个位置供用户输入用户名并将其传递给 $userid 是否容易?用户名格式为 john_smith@ourwiki.com
猜你喜欢
  • 2014-06-02
  • 2015-05-21
  • 2015-08-13
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多