Как создать пользователя в openfire, используя restpi в приложении nodeJs?

Это моя функция в приложении NodeJs, которую я использую для создания пользователя в openfire.

var createUser = function(objToSave, callback) {
    const options = {
        method: 'POST',
        uri: url.resolve(Config.APP_CONSTANTS.CHAT_SERVER.DOMAIN_NAME, '/plugins/restapi/v1/users'),
        headers: {
            'User-Agent': 'Request-Promise',
            'Authorization': Config.APP_CONSTANTS.CHAT_SERVER.SECRET_KEY,
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        data: objToSave
    }
    request(options)
        .then(function(response) {
            callback(null, response);
        })
        .catch(function(error) {
            // Deal with the error
            console.log(error);
            callback(error);
        });
};

objToSave - это объект json, содержащий имя пользователя и пароль.

{
  "Username": "gabbar",
  "Password": "gabbar@123"
}  

когда я запускаю эту функцию, я получаю следующую ошибку..

{
  "statusCode": 400,
  "error": "Bad Request"
}

Я правильно настроил свой секретный ключ и имя домена localhost: // 9090, кто-нибудь может сказать мне, что я делаю не так? заранее спасибо.

2 ответа

Решение

Я обнаружил, что проблема была с запросом-обещанием. отправка данных не была выполнена в требуемом формате. поэтому вместо этого сейчас я использую другой модуль minimal-request-обещание. и это сработало как очарование для меня. После этого мой код выглядит примерно так.

var requestPromise = require('minimal-request-promise');

var createUser = function(objToSave, callback) {
    const options = {
        headers: {
            'Authorization': Config.APP_CONSTANTS.CHAT_SERVER.SECRET_KEY,
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(objToSave)
    };
    requestPromise.post('http://localhost:9090/plugins/restapi/v1/users', options)
        .then(function(response) {
            callback(null, response);
        })
        .catch(function(error) {
            // Deal with the error
            console.log(options);
            console.log(error);
            callback(error);
        });
};

Я думаю, что варианты, которые вы предоставили, нужны JSON.stringify объект, прежде чем отправить его

Измененные параметры, как показано ниже

const options = {
        method: 'POST',
        uri: url.resolve(Config.APP_CONSTANTS.CHAT_SERVER.DOMAIN_NAME, '/plugins/restapi/v1/users'),
        headers: {
            'User-Agent': 'Request-Promise',
            'Authorization': Config.APP_CONSTANTS.CHAT_SERVER.SECRET_KEY,
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        data: JSON.stringify(objToSave)
  }
Другие вопросы по тегам