【发布时间】:2018-07-02 22:26:02
【问题描述】:
我正在尝试将一些数据发布到通过 Hyperledger composer 生成的 REST 服务器中。我有一个 JSON 文件,我正在尝试使用 NodeJS 和请求模块来发布。但是,请求模块似乎可以找到我的链接。
这是我试图发布我的资产的地方(这是在 REST 服务器上):
我将这个帖子部分的 url 复制并粘贴到我的 inputter.js 代码中
这是我当前的目录(我正在运行 inputter.js 文件):
这是我的 inputter.js 代码:
var request = require('request');
var requestData = require("./input.json");
var url = "http://localhost:3000/explorer/#!/models95certificateModel95certificate/models_certificateModel_certificate_create";
request({
url: url,
method: "POST",
headers: {
"content-type": "application/json",
},
json: requestData
}, function (error, response, body) {
if(error)
throw error;
console.log('statusCode:', response && response.statusCode);
console.log('body:', body);
});
这是我要输入的 JSON 数据:
[
{
"$class": "models.certificateModel.certificate",
"hash" : "36ba3cf8261e1d203eafcf102f6426a9f0ff38edc62df6d7359938b2f358d68b8ce568325ebcd1ddfb3f64ebe41b73fc84d8fecd9023f834b487738ae02c6370",
"state": "VALID",
"issuer": "45576f7f-2f07-43f7-9638-1dcaa37a9f94",
"owner": "d804d827-ebe8-4c42-b4b3-2888bba676a8",
"comments": "Issued Certificate"
},
{
"$class": "models.certificateModel.certificate",
"hash": "fc8ab6b4f10c80fbf6219e91991a32708f2da3d6de6eb2a52ac78ca930293597fdc693533afee6caae501a4808ecbb3b5367383e5e2ab88b08aef15af61a6497",
"issuer": "45576f7f-2f07-43f7-9638-1dcaa37a9f94",
"owner": "d2f0cf4b-cb21-4bc8-b059-e83abaa13e60",
"state": "VALID",
"comments": "Issued Certificate"
},
{
"$class": "models.certificateModel.certificate",
"hash": "c876cf2b110f3af71fba5bba6dd48d2a063f1806c307cd9ae3e50494d39847137eba464c81bb423342bac8b6084f3e900b85044bef3cec459fd10c5f6bea0ad5",
"issuer": "45576f7f-2f07-43f7-9638-1dcaa37a9f94",
"owner": "39dfa2eb-76b9-44e4-a9fa-a107fadd2d46",
"state": "VALID",
"comments": "Issued Certificate"
}
]
我在 REST 服务器上手动输入了数据,JSON 文件中的所有内容似乎都是有效的。
但是,当我运行 inputter.js 应用程序时,我收到 404 错误。这是错误的正文:
body: { error:
{ statusCode: 404,
name: 'Error',
message: 'Cannot POST /explorer/',
status: 404,
stack: 'Error: Cannot POST /explorer/\n at raiseUrlNotFoundError (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/loopback/server/middleware/url-not-found.js:21:17)\n at Layer.handle [as handle_request] (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:317:13)\n at /Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:284:7\n at Function.process_params (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:335:12)\n at next (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:275:10)\n at /Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:635:15\n at next (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:260:14)\n at Function.handle (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:174:3)\n at router (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:47:12)\n at Layer.handle [as handle_request] (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:317:13)\n at /Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:284:7\n at Function.process_params (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:335:12)\n at Immediate.next (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:275:10)\n at Immediate.<anonymous> (/Users/harshdeshpande/.nvm/versions/node/v8.11.3/lib/node_modules/composer-rest-server/node_modules/express/lib/router/index.js:635:15)' } }
我对请求模块相对较新,无法弄清楚这里到底发生了什么。请求模块不能读取本地主机地址吗?我到底错过了什么?
【问题讨论】:
-
您的网址不正确。您不会向 /explorer 路径提交请求,因为这是内置于其余服务器中的测试 UI 的路径。如果您使用资源管理器 UI 进行测试,它应该会告诉您请求的 url 和示例 CURL 调用。
-
谢谢!我找到了正确的 URL(它在 REST 服务器中列出)。
标签: node.js rest http-post hyperledger-composer npm-request