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:在错误对象中返回详细信息对象的规范。
属性
- getHeader :检索从服务器发送的标头的函数。
- httpStatus :http请求的状态。
- messageCode :错误消息代码。
- messages :额外的错误消息(s)。
- requestOptions :随http请求发送的查询参数。
- ssl :指示请求是否需要https。
- subCode :错误消息子代码。
- 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 | 检查用户是否已经登录。如果是,则登录时不会显示其他提示。 |
- 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/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论