当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。