Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用node.js中需要用户名/密码身份验证的REST api_Javascript_Node.js_Meteor_Meteor Restivus - Fatal编程技术网

Javascript 如何使用node.js中需要用户名/密码身份验证的REST api

Javascript 如何使用node.js中需要用户名/密码身份验证的REST api,javascript,node.js,meteor,meteor-restivus,Javascript,Node.js,Meteor,Meteor Restivus,我想使用一个RESTAPI,它需要node.js中的用户名/密码身份验证。使用api的代码如下所示: var request=require('request'); var url='1〕http://localhost:3000/api/v1/login/' get(url,{'auth':{'user':'test35','pass':'mypassword','sendInstance':false}},函数(err,httpResponse,body){ 如果(错误){ 返回控制台。错误

我想使用一个RESTAPI,它需要node.js中的用户名/密码身份验证。使用api的代码如下所示:

var request=require('request');
var url='1〕http://localhost:3000/api/v1/login/'
get(url,{'auth':{'user':'test35','pass':'mypassword','sendInstance':false}},函数(err,httpResponse,body){
如果(错误){
返回控制台。错误('post失败:',错误);
}
log('Post successful!服务器响应为:',正文);
});
使用上述代码,我得到的错误是:

{
“状态”:“错误”,
“消息”:“API终结点不存在”
}
api是用meteor restivus编写的,您可以在下面的问题中看到它

在API中,当我删除API的authRequired时:true,即remove

{
路线选项:{
authRequired:true
}
}
在使用上述API的代码中,将url更改为

"

致:


运行“node accessRESTapi.js”,我就可以使用RESTAPI了!我无法正确执行的是在按照上述设置“authRequired:true”时的身份验证!请帮助编辑:根据评论中的信息更新

登录以获取令牌与后续请求的请求风格截然不同:

用于登录 指定登录操作必须通过对
/api/login/
POST
请求完成,请求的主体包含
用户名
电子邮件
密码
作为url编码参数

var request=require('request');
var url='1〕http://localhost:3000/api/v1/login/'
var user='test35';
var pass='mypassword';
//保存这些以备将来的请求
var用户id;
var-authToken;
//使用POST而不是GET
请寄(
{
uri:url,
//我之所以使用表单,是因为它符合` restivus'所期望的urlEncoding行为`
表单:{用户名:用户,密码:pass}
},
功能(错误、httpResponse、正文){
如果(错误){
返回控制台。错误('post失败:',错误);
}
var json=json.parse(body);
authToken=json.data.authToken;
userId=json.data.userId;
log('Post successful!服务器响应为:',正文);
}
);
未来的请求 现在,您需要使用先前保存的
userId
authToken

,这意味着所有后续请求上的
X-User-Id
X-Auth-Token

var request=require('request');
var url='1〕http://localhost:3000/api/v1/articles/'
请求({
uri:url,
标题:{
“X-User-Id”:userId,
“X-Auth-Token”:authToken
}
},函数(错误,httpResponse,body){
如果(错误){
返回控制台。错误('get failed:',err);
}
log('获取成功!服务器响应:',正文);
});

综合起来: 我们希望确保在发出任何进一步请求之前获得
authToken

这意味着在第一个函数的回调中发出第二个请求,如下所示:

var request=require('request');
var url='1〕http://localhost:3000/api/v1/login/';
var user='test35';
var pass='mypassword';
//保存这些以备将来的请求
var用户id;
var-authToken;
//使用POST而不是GET
请寄(
{
uri:url,
//我之所以使用表单,是因为它符合` restivus'所期望的urlEncoding行为`
表单:{用户名:用户,密码:pass}
},
功能(错误、httpResponse、正文){
如果(错误){
返回控制台。错误('post失败:',错误);
}
var json=json.parse(body);
authToken=json.data.authToken;
userId=json.data.userId;
log('Post successful!服务器响应为:',正文);
//现在我们提出第二个要求
//欢迎来到地狱
var articlesUrl=http://localhost:3000/api/v1/articles/';
请求({
uri:articlesUrl,
标题:{
“X-User-Id”:userId,
“X-Auth-Token”:authToken
}
},函数(错误,httpResponse,body){
如果(错误){
返回控制台。错误('post失败:',错误);
}
log('获取成功!服务器响应:',正文);
});
}
);