softlayer-client: невозможно обновить VPN для User_Customer через REST API - PullRequest
0 голосов
/ 05 ноября 2018

Я экспериментирую с программной оболочкой API-клиента в моем приложении Node Express. Моя цель - обновить пароль VPN для User_Customer, вызвав метод updateVpnPassword для конкретного пользователя.

Я могу создать вызов для обновления пароля VPN, используя request, но я не уверен, что это лучший способ достичь желаемого результата.

Можно ли использовать модуль 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' } }.

Я ожидаю, что ответ ИСТИНА или ЛОЖЬ указывает на успешность обновления.

Подобный клиент Python можно найти здесь , но мне требуется реализация в JS.

1 Ответ

0 голосов
/ 07 ноября 2018

Я не знаком с 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, и пользователя, с которым вы отправляете запрос.

...