这是我用来连接到 REST 样式 API(使用 jquery)的一些代码:
var api = {
connection: {
baseUrl: 'your_domain.tld',
apiUrl: '/some_path/'
},
initialize: function() {
api.setupAjaxDefaults();
},
setupAjaxDefaults: function() {
var headers = {
'Accept': "application/json; encoding='utf-8'",
'Content-Type': "application/json; encoding='utf-8'"
};
$.ajaxSetup({
headers: headers,
dataType: 'json',
crossDomain: true
});
},
testCall: function(data) {
api.ajaxGet( someMethod, data, aSuccessCallback, anErrorCallback );
},
ajaxGet: function(methodName, data, successCallback, errorCallback) {
$.ajax({
url: api.connection.baseUrl + api.connection.apiUrl + methodName,
data: data,
cache: false,
type: 'GET',
success: function(result, status, xhr) {
if ($.isFunction(successCallback)) {
successCallback(result);
}
},
error: function() {
if ($.isFunction(errorCallback)) {
errorCallback();
}
}
});
},
ajaxGetCached: function(methodName, data, successCallback, errorCallback) {
$.ajax({
url: api.connection.baseUrl + api.connection.apiUrl + methodName,
data: data,
type: 'GET',
success: function(result, status, xhr) {
if ($.isFunction(successCallback)) {
successCallback(result);
}
},
error: function() {
if ($.isFunction(errorCallback)) {
errorCallback();
}
}
});
}
};
要使用这个,你首先调用api.initialize();
然后拨打电话(上面的 testCall 示例):
api.testCall(someApiMethod, { data: someData, moreData: evenMore });