我有一些简单的javascript函数可以与像这样的API进行交互登录:
login: function(username, password) {
var calledUrl = baseapi + "user/login/" + credentials;
calledUrl.post(
function (content) {
/*console.log("success" + JSON.stringify(content, null, 4));*/
},
function (e) {
console.log("it failed! -> " + e);
},
{
"username": username,
"password": password
},
{"Accept" : "application/json"}
);
},
问题是,在URL中我必须传递一些凭据,它们看起来像这样:
var credentials = "?api_username=" + api_username + "&api_key=" + api_key;
现在这个变量被硬编码以进行一些测试,但当然它应该为每个使用该功能的人改变。我不想在每次请求时都要求它,在这种情况下,我只想要username
和password
。我想在初始化过程中或者在调用任何内容时一劳永逸地要求它,然后在执行各种功能时记住它。
答案 0 :(得分:1)
如果.login()
是第一种通常需要凭据的方法,那么您可以将其作为该方法的必需参数,然后将凭证存储在对象中:
login: function(username, password, credentials) {
// save credentials for use in other methods
this.credentials = credentials;
var calledUrl = baseapi + "user/login/" + credentials;
calledUrl.post(
function (content) {
/*console.log("success" + JSON.stringify(content, null, 4));*/
},
function (e) {
console.log("it failed! -> " + e);
},
{
"username": username,
"password": password
},
{"Accept" : "application/json"}
);
},
然后,在其他方法中,您可以使用this.credentials
访问此用户的凭据。
如果还有其他方法也可以先调用并需要凭据,那么您也可以将凭据作为参数,或者您可以创建只建立凭据的.init()
方法或你可以在这个对象的构造函数中使它成为一个参数。
您可能还需要修复此行:
calledUrl.post(...)
因为calledUrl
是一个字符串而字符串没有.post()
方法,除非您使用某种第三方库添加一个。
答案 1 :(得分:1)
我建议您阅读JavaScript中的范围。如果没有更多解释你想要做什么,我会尝试这样的模式......
var app = {
baseapi: 'http://some.url.com'
/* assuming the api user/pass are different form the account trying to log in */
,api_username: ''
,api_key: ''
,username: ''
,userpass: ''
,get_creditialString: function() {
return '?api_username=' + this.api_username + '&api_key=' + this.api_key;
}
,init: function(){
// do something to prompt for username and password
this.username = 'myUserName';
this.userpass = 'supersecretpassword';
this.login();
}
,login: function() {
var calledUrl = this.baseapi + "user/login/" + this.get_credentialString();
calledUrl.post(
function (content) {
/*console.log("success" + JSON.stringify(content, null, 4));*/
},
function (e) {
console.log("it failed! -> " + e);
},
{
"username": this.username,
"password": this.userpass
},
{"Accept" : "application/json"}
);
}
}
app.init();