使用angular服务传递json数据
我一直试图通过json请求使用angular2服务将数据发布到节点api。但是,当我通过angular2服务传递参数时,我的节点api接收到使用angular服务传递json数据,json,node.js,angular,angular2-services,Json,Node.js,Angular,Angular2 Services,我一直试图通过json请求使用angular2服务将数据发布到节点api。但是,当我通过angular2服务传递参数时,我的节点api接收到未定义的值。 下面是我的角度服务代码 enrolldegree(name,depart,enrollnumber,cgpa,university,token){ let peer = '["localhost:10151","localhost:10351"]'; let fcn = 'initDegree'; let argument =
未定义的值。
下面是我的角度服务代码
enrolldegree(name,depart,enrollnumber,cgpa,university,token){
let peer = '["localhost:10151","localhost:10351"]';
let fcn = 'initDegree';
let argument = '["'+name+'","'+depart+'","'+enrollnumber+'","'+cgpa+'","'+university+']';
let headers = new Headers({'cache-control':'no-cache', 'Content-Type': 'application/json', 'authorization':'Bearer '+token});
let options = new RequestOptions({ headers: headers });
let body1 = new URLSearchParams();
body1.set('peers','["localhost:10151","localhost:10351"]');
body1.set('fcn',fcn);
body1.set('args',argument);
let body = JSON.stringify(body1);
console.log('server logs',body);
return this.http.post('http://localhost:4000/channels/mychannel/chaincodes/mycc', body, options )
.map((res: Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error shit bang in'));
}
这是我的节点api代码
app.post('/channels/:channelName/chaincodes/:chaincodeName', function(req, res) {
logger.debug('==================== INVOKE ON CHAINCODE ==================');
var peers = req.body.peers;
var chaincodeName = req.params.chaincodeName;
var channelName = req.params.channelName;
var fcn = req.body.fcn;
var args = req.body.args;
logger.debug('channelName : ' + channelName);
logger.debug('chaincodeName : ' + chaincodeName);
logger.debug('fcn : ' + fcn);
logger.debug('args : ' + args);
if (!peers || peers.length == 0) {
res.json(getErrorMessage('\'peers\''));
return;
}
if (!chaincodeName) {
res.json(getErrorMessage('\'chaincodeName\''));
return;
}
if (!channelName) {
res.json(getErrorMessage('\'channelName\''));
return;
}
if (!fcn) {
res.json(getErrorMessage('\'fcn\''));
return;
}
if (!args) {
res.json(getErrorMessage('\'args\''));
return;
}
invoke.invokeChaincode(peers, channelName, chaincodeName, fcn, args, req.username, req.orgname)
.then(function(message) {
res.send(message);
});
});
当我尝试使用curl查询发布数据时,一切都很好。这是我在发出post请求时使用的curl查询
curl -s -X POST \
http://localhost:4000/channels/mychannel/chaincodes/mycc \
-H "authorization: Bearer $ORG1_TOKEN" \
-H "content-type: application/json" \
-d '{
"peers": ["localhost:7051", "localhost:8051"],
"fcn":"initDegree",
"args":["Khurrum","software","Ned11831314","3.5","Ned"]
}'
我在angular2服务中做错了什么?在angular2服务代码中,不要将请求主体创建为URLSearchParams实例,请尝试以下操作:
let body1 = {
peers: ["localhost:10151","localhost:10351"],
fcn: fcn,
args: argument
}
let body = JSON.stringify(body1);