REST SOE是什麼?
關於REST SOE
一種擴充套件ArcGIS for Server並能夠很好的讓Web API方便使用的方式就是以Web服務的形式編寫SOE。
基於REST的服務通過簡單的資料型別接收請求引數並返回響應結果,一般是JSON型別。如果你以前沒開發過REST,不要被它嚇倒。JSON僅僅是一種以標準方式被程式閱讀的格式化的文字資訊。
為了能夠使用REST SOE Web服務,需要獲取SOE的URL並且需要向URL後面新增一些其他的引數資訊,比如x、y座標或者是圖層名稱。然後伺服器會完成相應的工作並返回響應資訊,這些響應資訊有可能是屬性資料、向量點或者是圖片。
REST服務示例
下面的程式碼是一個使用ArcGIS Server REST 服務的示例。第一個示例沒有使用SOE,但是它有助於理解如何請求一個REST Web服務。在這個例子中,你要請求震級大於6.0的近期的地震。這是傳送到伺服器的URL。注意引數是以問好(?)開始。
以下是被伺服器以JSON格式返回的結果,你可以看到它是一種結構化的鍵值對集合。它們被大括號{}包裹在一起封裝成物件。看如下的程式碼示例:
{
"displayFieldName" : "eqid",
"fieldAliases" : {
"eqid" : "Earthquake ID"
},
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkid" : 4326
},
"fields" : [
{
"name" : "eqid",
"type" : "esriFieldTypeString",
"alias" : "Earthquake ID",
"length" : 50
}
],
"features" : [
{
"attributes" : {
"eqid" : "c0000f0y"
},
"geometry" : {
"x" : 148.95690000000002,
"y" : -6.0207999999999515
}
}
]
}
客戶端應用程式可以閱讀和解析JSON格式的響應,並在程式中對它進行處理。比如一個Web瀏覽器可以通過上面程式碼中的geometry中的x、y座標繪製一個點,從而能夠顯示出地震的位置。
REST SOE 示例
上面的示例僅僅使用了一個固定的ArcGIS Server地圖服務,沒有使用SOE。現在來看一下REST SOE的呼叫。下面的URL會根據經緯度去請求高程資訊(這個SOE被叫做ElevationsSOE):
http://sampleserver4.arcgisonline.com/ArcGIS/rest/services/Elevation/ESRI_Elevation_World/MapServer/exts/ElevationsSOE/ElevationLayers/1/GetElevationAtLonLat?lon=-123&lat=47&f=pjson下面是該URL各部分的詳細解析。注意REST SOE是如何暴露資源和操作的。資源就是伺服器上你可以獲取資訊的東西。操作是伺服器去獲取資訊的方法。在這個例子中,GetElevationAtLogLat就是一種操作。看下面的插圖:
通過使用這個操作,伺服器以簡單JSON物件的形式返回結果。這個值可以被用於表格、標註或者應用程式的其他地方。示例如下:
{
"elevation" : 83.003478588350134
}
當這些REST服務被呼叫的時候會發生什麼呢?最可能的是,伺服器會執行一些ArcObjects程式碼去得到結果。但是客戶端程式不需要了解ArcObjects。客戶端只需要知道如何傳送RUL請求以及獲取JSON格式的資料。
相關文章
- 什麼是restREST
- 使用SpringBoot構建REST服務-什麼是REST服務Spring BootREST
- Django-rest-framework 是個什麼鬼?DjangoRESTFramework
- 到底什麼樣的 REST 才是最佳 REST?REST
- REST是什麼?RESTFul又是什麼?這二者的關係是怎樣的?REST
- 為什麼REST比GraphQL更好? - TomaszJaskuλaREST
- 什麼是cookie,什麼是sessionCookieSession
- 這是什麼這是什麼
- 什麼是分而治之?什麼是WBS?
- 什麼是DNS,什麼是HostsDNS
- 什麼是WebAuthn、FIDO 是什麼?Web
- 什麼是REST架構?是不是Web應用都能採取此種架構呢?REST架構Web
- ###什麼是Linux核心###什麼是MMULinux
- ITIL是什麼意思?ITIL是什麼?
- SNP全稱是什麼? SNP是什麼公司? SNP是什麼意思?
- 人是什麼?人生是什麼?人為什麼會變?
- ftp是什麼,ftp是什麼東西?FTP
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- Java是什麼_Java是做什麼的?Java
- 什麼是this
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- IDFA、IMEI、OAID 是什麼,區別是什麼AI
- GNU是什麼?和Linux是什麼關係?Linux
- 什麼是SSRF攻擊?SSRF用途是什麼?
- 什麼是API介面,具體是什麼意思?API
- DRBD是什麼意思?優缺點是什麼?
- 什麼是塊元素?什麼是行內元素?
- 什麼是Tornado?它的特點是什麼?
- nginx 是什麼,能幹什麼?Nginx
- 什麼是zoom?它有什麼作用?OOM
- 什麼是NLA,它有什麼用?
- 什麼是Django?有什麼用途?Django
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是重繪repaint?什麼是迴流reflow?AI
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是eval()?eval是用來幹什麼的?
- 域名是什麼?申請域名的流程是什麼?