我在我的节点应用程序中使用'request'模块来在驻留在fuseki服务器中的本体模型中POST数据。我使用以下代码:
var request = require('request');
var querystring = require('querystring');
var myquery = querystring.stringify({update: "PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> INSERT { ?KPIs test:hasValue 2009} WHERE { ?KPIs test:hasValue ?Newvalue}"});
request.post('http://localhost:3030/DS-1/sparql?'+myquery, function (error, response, body) {
if (!error && response.statusCode == 200) {
// Show the HTML for the Google homepage.
console.log('successful update');
console.log(body);
} else {
console.log(response.statusCode);
console.warn(error);
}
});
PS:当我使用POSTMAN发送Post请求以插入数据时,它工作正常,但是从我的节点应用程序,它没有。它显示错误'错误请求400'。 P.S:GET方法在POSTMAN和节点应用程序中都能正常工作。
答案 0 :(得分:0)
/DS-1/sparql
是查询服务。
INSERT
是一项更新操作。
尝试/DS-1/update
最好使用Content-type在请求正文中发布更新。 ?update=
可能无效。
答案 1 :(得分:0)
解决问题: 我在发布请求的格式中犯了错误。更正后的格式如下。
var request = require('request');
var querystring = require('querystring');
var myquery2 = querystring.stringify({update: "PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> INSERT { ?KPI_Variables test:hasValue_ROB1 2000} WHERE { ?KPI_Variables test:hasValue_ROB1 ?Newvalue FILTER(?KPI_Variables= test:Actual_Production_Time)}"});
request.post({headers: {'content-type' : 'application/x-www-form-urlencoded'},url:'http://localhost:3030/DS-1/?'+myquery2 }, function (error, response, body) {
if (!error && response.statusCode == 200) {
// Show the HTML for the Google homepage.
console.log('successful update');
console.log(body);
}
else
{
console.log(response.statusCode)
console.warn(error);
}
});
&#13;
我错过了标题&#39;和&#39; url&#39;我的request.post。
中的元素