request

从远程服务器检索数据或上传文件。


// 从USGS远程服务器请求GeoJson数据
var url = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson";
esriRequest(url, {
  responseType: "json"
}).then(function(response){
  // 被请求的数据
  var geoJson = response.data;
});

方法概述

esriRequest():从远程服务器检索数据或从用户的计算机上传文件。

方法简介

esriRequest(url, options):从远程服务器检索数据或从用户的计算机上传文件。如果请求返回一个错误,错误对象将包括在EsriErrorDetails中指定的详细信息。

参数

  • url :请求的URL。类型string。
  • options :用户在数据请求中指定的选项。有关可用属性,请参见RequestOptions。

返回值

Promise<RequestResponse>:返回一个promise ,该promise 解析为具有RequestResponse规范的对象。如果请求返回一个错误,错误对象将包括在EsriErrorDetails中指定的详细信息。

类型定义


EsriErrorDetails:在错误对象中返回详细信息对象的规范。

属性

  1. getHeader :检索从服务器发送的标头的函数。
  2. httpStatus :http请求的状态。
  3. messageCode :错误消息代码。
  4. messages :额外的错误消息(s)。
  5. requestOptions :随http请求发送的查询参数。
  6. ssl :指示请求是否需要https。
  7. subCode :错误消息子代码。
  8. url :返回错误消息的请求的URL。

getHeader(headerName)

检索从服务器发送的标头的函数。默认情况下CORS只允许读取一些响应标头,请参阅:access - control - expose - header。

参数

headerName :标题的名称。

返回值

String:头的值。


esriRequest(url, options)
  .then(function(response) {
    // 打印请求的内容类型:'application/json'
    console.log("header: ", response.getHeader('Content-Type'));
  });

RequestOptions

具有以下描述请求的属性的对象。

属性

  • authMode :指示是否以及如何对ArcGIS服务的请求进行身份验证。默认值为auto。只适用于当esriConfig.request.useIdentity = true。
已知值 描述
auto 当请求安全资源时,用户将被登录。
anonymous 当请求安全资源时,将返回一个错误。
immediate 用户将在请求资源之前登录。
no-prompt 检查用户是否已经登录。如果是,则登录时不会显示其他提示。
可能值:"auto"|"anonymous"|"immediate"|"no-prompt"
  • body :如果上载文件,请在这里指定用于提交文件的表单数据或元素。如果指定,查询的参数将添加到URL中。
  • cacheBust :如果为真,浏览器将向服务器发送请求,而不是使用浏览器的本地缓存。如果为false,则使用浏览器的默认缓存处理。默认值为false。
  • headers :用于请求的标头。这是一个属性名为标题名的对象。
  • method :指示是否应该使用HTTP POST方法发出请求。默认情况下,这是根据请求大小自动确定的。默认值是auto。可选值:"auto"或者"post"。
  • query :请求的查询参数。如果:使用GET请求,或者设置了body属性,查询参数将添加到URL中。否则,如果:没有设置body属性,使用POST请求,查询参数将添加到body请求参数中。默认值为null。
  • responseType :响应格式。默认值json。可选值"json"|"xml"|"text"|"blob"|"array-buffer"|"document"|"image"
  • signal :AbortSignal允许取消请求。如果取消,承诺将被拒绝,并出现名为AbortError的错误。也看到AbortController。

const controller = new AbortController();
const signal = controller.signal;
esriRequest(url, { signal })
  .then((response) => {
    // 请求成功
  })
  .catch((err) => {
    if (err.name === 'AbortError') {
      console.log('Request aborted');
    } else {
      console.error('Error encountered', err);
    }
  });
// 中止知道控制器信号的请求
controller.abort();
  • timeout :指示等待服务器响应的时间(以毫秒为单位)。设置为0以无限期地等待响应。默认值为60000。
  • useProxy :指示请求应该使用代理。默认情况下,这是根据请求URL的域自动确定的。默认值为false。

RequestResponse

返回一个promise ,该promise 解析为具有以下规范的对象。如果请求返回一个错误,错误对象将包括在EsriErrorDetails中指定的详细信息。

属性

  • data :所请求的数据。应该将responseType与数据返回类型匹配。可能的类型有:json、xml、文本、blob、数组缓冲区、文档和图像。
  • requestOptions :用户在数据请求中指定的选项。有关可用属性,请参见RequestOptions。
  • ssl :指示请求是否需要https。
  • url :用于请求数据的URL。
  • getHeader :方法获取从服务器发送的标头。

// 从USGS远程服务器请求GeoJson数据
var url = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson";
esriRequest(url, {
  responseType: "json"
}).then(function(response){
  // 被请求的数据
  var geoJson = response.data;
});

版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/request-2/692/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>