山东威海网站开发,wordpress优秀移动站点,北京网站如何做推广,中国庆阳以下仅作为自己阅读官网api的对reques的理解做的备忘笔记。一知半解#xff0c;仅供参考。
1、获取或者构建第三方代理
官网解释#xff1a;代理在其自己的 Web 服务器上安装并运行#xff0c;而不是在 Esri 服务器或安装了 ArcGIS Enterprise 的计算机上安装和运行#…以下仅作为自己阅读官网api的对reques的理解做的备忘笔记。一知半解仅供参考。
1、获取或者构建第三方代理
官网解释代理在其自己的 Web 服务器上安装并运行而不是在 Esri 服务器或安装了 ArcGIS Enterprise 的计算机上安装和运行除非您的 Web 服务器还托管 ArcGIS Enterprise 实例。
个人理解通常使用了arcgis api for js的应用项目基本都会买arcgis产品安装在指定服务器上例如这里的服务器地址端口号是192.168.0.118001并在此地址端口号进行服务的发布。而使用的项目不一定会安装在同一个服务器之上。即esri服务器与应用项目服务器并不是同一个。
2、代理路径配置
官网解释为了使应用程序通过代理路由请求必须向应用程序添加代码以定义代理的托管位置。如果应用程序中的所有请求都使用相同的代理请使用请求对象的代理Url 属性指定位置。
require([esri/config], function(esriConfig) {esriConfig.request.proxyUrl /proxy/Java/proxy.jsp;
});
官网解释还可以使用特定的代理规则配置应用程序。这些规则指示代理使用具有相同 URL 前缀的特定资源。当应用程序尝试通过此 URL 访问资源时将通过指定的代理发送请求。请求的 proxyRules 属性是列出所有这些代理规则的对象。要填充它请使用 urlUtils.addProxyRule。
require([esri/core/urlUtils], function(urlUtils) {urlUtils.addProxyRule({urlPrefix: http://localhost:6080,//地图服务地址前缀要请求的地址proxyUrl: http://localhost:8080/Java/proxy.jsp//部署的代理文件地址});
});
3、request.interceptors拦截器
允许开发人员在发送请求之前或之后修改请求。 将使用与请求 URL 匹配的第一个拦截器。
//官网示例
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 URLurls: featureLayerUrl,// use the BeforeInterceptorCallback to check if the query of the// FeatureLayer has a maxAllowableOffset property set.// if so, then set the maxAllowableOffset to 0before: 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 its set to false, change// the value to true before returning the responseafter: function(response) {if (!response.ssl) {response.ssl true;}}
});//拦截在所有服务地址头部添加需要的头部信息放在加载地图资源之后调用服务之前
self.esriConfig.request.interceptors []self.esriConfig.request.interceptors.push({before: function (params) {const A Aconst B Bparams.requestOptions.headers {A: A,B: B}}});