web-services - 如何使用 REST 使用来自 drupal 的查询字符串检索用户?

标签 web-services drupal drupal-6 httpwebrequest

我想要什么

我希望能够在不发送电子邮件的情况下重置用户密码。我还需要通过 REST 来执行此操作(它适用于信息亭系统)。

所以我需要:

  • 获取具有特定用户名的用户
  • 重置该用户的密码

  • 尽我所能,我无法使用用户名获取用户。

    问题

    在我通过 REST 使用管理员用户登录后,我会:
    GET on http://mydomain.com/rest/user?name=user .

    根据 REST 文档,这应该得到名为 user 的用户。 .

    我收到 200 条回复,但是 正文中没有返回任何内容 .

    我试过的

    从 ID 获取节点

    以管理员身份登录后,我可以执行以下操作:

    获取 http://mydomain.com/rest/user/1

    这有效,在响应中返回用户 1 的详细信息。但我需要按用户名搜索用户。

    不同的 GET
    GET on http://mydomain.com/rest/user/admin
    GET on http://mydomain.com/rest/user/account/name/admin
    GET on http://mydomain.com/rest/user?account[name]=admin
    GET on http://mydomain.com/rest/user?uid=1
    GET on http://mydomain.com/rest/user/retrieve?uid=1
    GET on http://mydomain.com/rest/user?account[uid]=1
    

    所有这些都失败了。

    节点代替用户

    获取 http://mydomain.com/rest/node/1有效,但 http://mydomain.com/rest/node?nid=1给我一个 200 的响应,体内什么都没有。

    所有用户列表
    GET on http://mydomain.com/rest/user/也不显示所有用户的列表。我再次得到一个 200 的空体。

    更多细节
  • 我正在使用 Drupal 6.22 安装。
  • 我已经安装了服务模块 (3.0 RC1) 和 REST Server (2.0 beta 1)。
  • 我已经安装了 session 身份验证模块。
  • 我已经在 session 身份验证打开和关闭的情况下尝试了上述方法。
  • 我已经为我设置的 REST 端点启用了所有节点资源和用户资源。
  • 我已经尝试了上面有和没有干净 URL 的方法,但似乎没有任何区别。

  • 问题

    如何获取具有特定用户名的用户?我究竟做错了什么?

    更新

    我已经卸载然后重新安装了服务模块,我对 REST 服务器做了同样的事情。我还将我的 CTools 版本回滚到最新推荐的版本。我添加了一项全新的服务,以防它被损坏。我所做的一切都不起作用。令人沮丧!

    更新 2

    我找到了问题,但想要一个更永久的解决方案。事实证明这是由于表命名而导致的错误。请参阅我当前接受的答案。

    最佳答案

    对不起,这让你很沮丧。我是服务模块的维护者,并且确实在处理文档,但我想我会在这里回答以让您继续前进。

    你没有得到任何你想要的数据的原因是你传递的参数是错误的。

    如果你看 user_resource.inc 索引定义如下

          'index' => array(
        'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/user_resource'),
        'callback' => '_user_resource_index',
        'args' => array(
          array(
            'name' => 'page',
            'optional' => TRUE,
            'type' => 'int',
            'description' => 'The zero-based index of the page to get, defaults to 0.',
            'default value' => 0,
            'source' => array('param' => 'page'),
          ),
          array(
            'name' => 'fields',
            'optional' => TRUE,
            'type' => 'string',
            'description' => 'The fields to get.',
            'default value' => '*',
            'source' => array('param' => 'fields'),
          ),
          array(
            'name' => 'parameters',
            'optional' => TRUE,
            'type' => 'array',
            'description' => 'Parameters',
            'default value' => array(),
            'source' => array('param' => 'parameters'),
          ),
        ),
        'access arguments' => array('access user profiles'),
        'access arguments append' => FALSE,
      ),
    

    注意第三个参数,参数。
    只要打开索引查询,您就可以做各种有趣的事情,但是您没有尝试过的是 ?parameters[name]=user 下面的示例

    当我向 http://test/api/user?parameters[name]=gdsfgsdfgsdfg&fields=name,uid 提出请求时
    我被退回
    [
     {
      "name":"gdsfgsdfgsdfg",
      "uid":"36",
      "uri":"http:\/\/test\/api\/user\/36"
     }
    ]
    

    请注意,我还添加了一些字段,uid 和 name。显然这些是可选的,但它向您展示了索引查询的力量。这同样适用于节点。

    我希望这有帮助。
    Fetcher

    关于web-services - 如何使用 REST 使用来自 drupal 的查询字符串检索用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429681/

    相关文章:

    wcf - 在多个环境中测试 Web 服务

    java - 代号一网络服务 SOAP 调用不起作用

    web-services - Erlang 和 SOAP 服务 - 进退两难

    php - mysql drupal 6 查询问题

    drupal-6 - 如何在 drupal 中设置 View 的寻呼机样式?

    android - Android 应用程序中的 Shopify

    php - $_SERVER ['REQUEST_URI' ] 和 $_GET ['q' ] 有什么区别?

    drupal - 我需要一个将字段集合附加到表单的示例

    mysql - Drupal 数据库 API 增量

    drupal - 每次保存节点后如何在drupal中执行操作?