我正在学习如何使用API更新Wikidata上的值。登录和cookies工作正常,但是当我试图更新一个值时,我会得到一个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有关。
所以问题是,更新snakvalue的正确方法是什么?
发布于 2021-02-23 09:17:34
问题是,您是在声明value={"entity-type":"Q1917"},但Q1917不是entity-type!
相反,您应该声明value={"entity-type":"item","numeric-id":1917}。
有关深化该主题的内容,请参阅Wikidata API的文档。
https://stackoverflow.com/questions/66328569
复制相似问题