Connection.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. * 在 ajax request 前修改url,增加服务端`basePath`
  3. * `basePath`在`app.json`配置
  4. */
  5. Ext.define('saas.override.data.Connection', {
  6. override: 'Ext.data.Connection',
  7. urlRegexp: /(http|ftp|https):\/\//,
  8. config: {
  9. /**
  10. * @cfg {Object} defaultServerHeaders
  11. * 与defaultHeaders有区别,只在调用server api的时候才添加的headers
  12. */
  13. defaultServerHeaders: {
  14. 'Authorization': JSON.parse(localStorage.getItem('app-state-session')).token
  15. }
  16. },
  17. privates: {
  18. setupServerOptions: function(options) {
  19. var serverOptions = Ext.manifest.server, originUrl = options.url;
  20. if (serverOptions && serverOptions.basePath && !this.urlRegexp.test(originUrl) &&
  21. (!serverOptions.urlPattern || new RegExp(serverOptions.urlPattern).test(originUrl))) {
  22. Ext.Object.merge(options, {
  23. url: serverOptions.basePath + (originUrl.indexOf('/') == 0 ? '' : '/') + originUrl,
  24. headers: Ext.apply(options.headers, this.getDefaultServerHeaders())
  25. });
  26. }
  27. }
  28. },
  29. request: function(options) {
  30. if (options && options.url) {
  31. this.setupServerOptions(options);
  32. }
  33. return this.callParent([options]);
  34. }
  35. });