gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:05:17 24 4
gpt4 key购买 nike

我想要什么

我希望能够在不发送电子邮件的情况下重置用户密码。我还需要通过 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com