【问题标题】:Cannot POST JSON data into REST server无法将 JSON 数据发布到 REST 服务器
【发布时间】: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


【解决方案1】:

我认为您没有导出输入数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多