Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

159 lines
4.6 KiB

/**
* Simple class that represents a Request that will be made by any {@link Ext.data.proxy.Server} subclass.
* All this class does is standardize the representation of a Request as used by any ServerProxy subclass,
* it does not contain any actual logic or perform the request itself.
*/
Ext.define('Ext.data.Request', {
config: {
/**
* @cfg {String} action
* The name of the action this Request represents. Usually one of 'create', 'read', 'update' or 'destroy'.
*/
action: undefined,
/**
* @cfg {Object} params
* HTTP request params. The Proxy and its Writer have access to and can modify this object.
*/
params: undefined,
/**
* @cfg {String} method
* The HTTP method to use on this Request. Should be one of 'GET', 'POST', 'PUT' or 'DELETE'.
*/
method: 'GET',
/**
* @cfg {String} url
* The url to access on this Request.
*/
url: null,
/**
* @cfg {Ext.data.operation.Operation} operation
* The operation this request belongs to.
*/
operation: null,
/**
* @cfg {Ext.data.proxy.Proxy} proxy
* The proxy this request belongs to.
*/
proxy: null,
/**
* @cfg {Boolean} disableCaching
* Whether or not to disable caching for this request.
*/
disableCaching: false,
/**
* @cfg {Object} headers
* Some requests (like XMLHttpRequests) want to send additional server headers.
* This configuration can be set for those types of requests.
*/
headers: {},
/**
* @cfg {String} callbackKey
* Some requests (like JsonP) want to send an additional key that contains
* the name of the callback function.
*/
callbackKey: null,
/**
* @cfg {Ext.data.JsonP} rawRequest
* Set the raw request object (Ajax/JsonP/Other)
* @private
*/
rawRequest: null,
/**
* @cfg {Object} jsonData
* This is used by some write actions to attach data to the request without encoding it
* as a parameter.
*/
jsonData: undefined,
/**
* @cfg {Object} xmlData
* This is used by some write actions to attach data to the request without encoding it
* as a parameter, but instead sending it as XML.
*/
xmlData: undefined,
/**
* @cfg {Boolean} withCredentials
* This field is necessary when using cross-origin resource sharing.
*/
withCredentials: false,
/**
* @cfg {String} username
* Most oData feeds require basic HTTP authentication. This configuration allows
* you to specify the username.
* @accessor
*/
username: null,
/**
* @cfg {String} password
* Most oData feeds require basic HTTP authentication. This configuration allows
* you to specify the password.
* @accessor
*/
password: null,
/**
* @cfg {Boolean} binary
* True to request binary data from the server. This feature requires
* the use of a binary reader such as {@link Ext.data.amf.Reader AMF Reader}
*/
binary: false,
callback: null,
scope: null,
timeout: 30000,
records: null,
// The following two configurations are only used by Ext.data.proxy.Direct and are just
// for being able to retrieve them after the request comes back from the server.
directFn: null,
args: null,
useDefaultXhrHeader: null
},
/**
* Creates the Request object.
* @param {Object} [config] Config object.
*/
constructor: function(config) {
this.initConfig(config);
},
/**
* Gets a single param from the {@link #params}.
* @param {String} key The key for the param.
* @return {Object} The value for the param. `undefined` if it does not exist.
*/
getParam: function(key) {
var params = this.getParams(),
val;
if (params) {
return params[key];
}
return val;
},
/**
* Sets a single param value in the {@link #params}.
* @param {String} key The key to set.
* @param {Object} value The value to set.
*/
setParam: function(key, value) {
var params = this.getParams() || {};
params[key] = value;
this.setParams(params);
}
});