當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript ArcGIS config.RequestInterceptor用法及代碼示例


基本信息

以下是所在類或對象的基本信息。

AMD: require(["esri/config"], (esriConfig) => { /* code goes here */ });

ESM: import esriConfig from "@arcgis/core/config";

對象: esri/config

自從:用於 JavaScript 4.0 的 ArcGIS API

用法說明

config.RequestInterceptor函數(或屬性)的定義如下:

RequestInterceptor


指定用於攔截和修改通過 esriRequest 發出的請求的對象。

屬性:

類型說明
可選的

在請求發送後但在返回給調用者之前對響應進行更改。

可選的

在發送請求之前更改請求 URL 或選項。返回值將用作響應數據,這將阻止發送請求。

可選的

當請求處理期間發生錯誤時,將使用 Error 對象調用此函數,以提供有關發生情況的詳細信息。例如,這可用於記錄層或服務發生的特定錯誤。

headers Object
可選的

將標題設置或添加到 requestOptions.headers 中。另請參閱:requestOptions

query Object
可選的

將查詢參數設置或添加到 requestOptions.query 中。另請參閱:requestOptions

responseData Object
可選的

硬編碼 response 。不會發送請求。這被解析為響應 data

可選的

指定應用於攔截器的 URL。如果該值為 String 類型,則如果請求 URL 以該字符串開頭,則匹配。如果為 null 或未定義,則攔截器將應用於所有相關請求。

例子:

const featureLayerUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0";

esriConfig.request.interceptors.push({
  // set the `urls` property to the URL of the FeatureLayer so that this
  // interceptor only applies to requests made to the FeatureLayer URL
  urls: featureLayerUrl,
  // use the BeforeInterceptorCallback to check if the query of the
  // FeatureLayer has a maxAllowableOffset property set.
  // if so, then set the maxAllowableOffset to 0
  before: function(params) {
    if (params.requestOptions.query.maxAllowableOffset) {
      params.requestOptions.query.maxAllowableOffset = 0;
    }
  },
  // use the AfterInterceptorCallback to check if `ssl` is set to 'true'
  // on the response to the request, if it's set to 'false', change
  // the value to 'true' before returning the response
  after: function(response) {
    if (!response.ssl) {
      response.ssl = true;
    }
  }
});
const featureLayer = new FeatureLayer({
   url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/3"
});

esriConfig.request.interceptors.push({
   urls: featureLayer.url,
   // set the error function and check if an error occurs, and if it's name is "AbortError"
   // if so, display a useful error about the layer, if not, ignore the error
   error: function(error) {
      if (error.name == "AbortError") {
         // we're only interested in aborted request errors
         console.error(`An error happened with layer ${featureLayer.title}`, error);
      }
      return;
   }
});

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 config.RequestInterceptor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。