我正在Node Express应用程序中尝试使用softlayer-client api包装器。我的目标是通过在特定用户上调用updateVpnPassword方法来更新User_Customer的VPN密码。
我可以使用request
构造一个呼叫来实现VPN密码更新,但是我不确定这是达到预期结果的最佳方法。
是否可以使用softlayer-client模块对此进行类似的调用:
function updateVpnPassword(req, res, next) {
// Construct URL to update VPN
myURL = 'https://' + <userIDAdmin> + ':' + <apiKeyAdmin> + '@api.softlayer.com/rest/v3/SoftLayer_User_Customer/' + <softLayerID> + '/updateVpnPassword/' + <newPassword> + '.json';
request.get({url: myURL}, function (error, response, body) {
console.log('error:', error);
console.log('statusCode:', response && response.statusCode);
console.log('body:', body);
});
next();
}
我最初的尝试是尝试对此进行变化:
function updateVpnPassword(req, res, next) {
// Assuming var client = new SoftLayer();
client
.auth(<userIDAdmin>, <apiKeyAdmin>)
.path('User_Customer', <softLayerID>,'updateVpnPassword')
.parameters(<newPassword>)
.put(function(err,result){
console.log(result);
if (err) {
next(err); // Pass errors to Express.
}
else {
// update successful
}
});
next();
}
但是控制台日志给出了类似的错误响应
{ message: { error: 'Internal Error', code: 'SoftLayer_Exception_Public' } }
。
我期望TRUE或FALSE响应,以指示更新是否成功。
here可以找到类似的python客户端,但是我需要用JS实现。
答案 0 :(得分:0)
我对nodejs不熟悉,但是我安装了软件包softlayer-node并运行您的第二个代码即可。
我还创建了以下脚本,并获得TRUE
var username = 'set me';
var apikey = 'set me';
var userId = 1111111;
var SoftLayer = require('softlayer-node');
var client = new SoftLayer();
client
.auth(username, apikey)
.path('User_Custome', userId, 'updateVpnPassword')
.parameters('P@ssword123')
.put()
.then(function(result) {
console.log(result);
}, function(error) {
console.log(error);
});
节点命令:
$ node updateVpnPassword.js
true
您是否尝试过使用curl或邮递员等其他REST客户端发送该请求?
如果遇到相同的错误,则建议您提交票证并提供信息,例如您试图更新vpn密码的用户ID和发送请求的用户。