我在项目的门户端使用node-rest-client库来调用我的其他API。
我在门户网站上有以下注册方法:
client.registerMethod("addFriendToUser", host + "/users/&{userId}/friends/${friendId}", "POST");
当我用以下方式用两个字符串参数调用它时,api端只会出现其中一个:
var args = {
path: {
'userId': '1',
'friendId': '2'
},
headers: {
"Content-Type": "application/json",
"Authorization": /* ... */
}
};
client.methods.addFriendToUser(args, function(data, response) {
// ...
});
在API方面,我有以下端点:
// ...
var router = express.Router();
router.route('/users/:userId/friends/:friendId')
.post(/* ... middleware to check the Auth token from the header */, function(req, res, next) {
// ...
// Debugging the request parameters
console.log(req.params);
// ...
});
在这种情况下,我会在req.params
中看到以下参数:
{
userId: '&{userId}',
friendId: '1'
}
似乎我的第一个参数没有转发到端点。如果我直接从POSTMAN调用端点,它可以正常工作。我也尝试切换参数但结果相同。
我还检查了source code on github,但无法弄清楚可能出现的问题:
任何帮助将不胜感激:)
答案 0 :(得分:1)
您遇到语法错误:
client.registerMethod("addFriendToUser", host + "/users/&{userId}/friends/${friendId}", "POST");
应该是:
client.registerMethod("addFriendToUser", host + "/users/${userId}/friends/${friendId}", "POST");
请注意错误的&
需要$