0

这是我在 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,谁能告诉我我做错了什么?提前致谢。

4

2 回答 2

0

我认为您提供的选项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)
  }
于 2018-02-05T11:50:00.907 回答
0

我发现问题出在request-promise上。它没有以所需的格式正确发送数据。所以现在我使用不同的模块minimum-request-promise代替那个。它对我来说就像魅力一样。使用后,我的代码看起来像这样。

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);
        });
};

于 2018-02-06T16:37:43.653 回答