为什么 "Invalid snak data" 更新 wikibase?

Why "Invalid snak data" on updating wikibase?

我正在尝试学习如何使用 API 更新维基数据上的值。登录和 csrf cookie 工作正常,但是当我尝试更新值时,我收到 invalid-snak 错误。

请求正文如下所示:

POST /w/api.php HTTP/1.1
Accept-Encoding: gzip
Content-Length: 178
User-Agent: Mojolicious (Perl)
Host: test.wikidata.org
Content-Type: application/x-www-form-urlencoded
Cookie: [omitted]

action=wbcreateclaim&bot=1&entity=Q3345&format=json&property=P9876&snaktype=value&token=[omitted]&value=%7B%22entity-type%22%3A%22Q1917%22%7D

响应是:

{
  "error": {
    "code": "invalid-snak",
    "info": "Invalid snak data.",
    "messages": [
      {
        "name": "wikibase-api-invalid-snak",
        "parameters": [],
        "html": {
          "*": "Invalid snak data."
        }
      }
    ],
    "*": "See https://test.wikidata.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."
  },
  "servedby": "mw1386"
}

我尝试了多种方法来通过更改值来成功更新 - 没有结果。我唯一成功的更新是 snaktype=novalue - 这将确认问题仅出在 snak vaue 上。

所以问题是,更新 snakvalue 的正确方法是什么?

问题是您说的是 value={"entity-type":"Q1917"},但 Q1917 不是 entity-type

您应该改为声明 value={"entity-type":"item","numeric-id":1917}

深化话题见Wikidata API's documentation