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格式的資料。
相關文章
- 示例:建立REST SOEREST
- 什麼是restREST
- 什麼是REST?REST
- REST SOE模板概覽REST
- 建立REST SOE的schemaREST
- 處理REST SOE請求REST
- 在REST SOE中處理JSONRESTJSON
- 在客戶端程式中使用REST SOE客戶端REST
- Django-rest-framework 是個什麼鬼?DjangoRESTFramework
- 建立REST SOE實戰演練系列連結REST
- 使用SpringBoot構建REST服務-什麼是REST服務Spring BootREST
- 關於構建REST風格的SOE的策略REST
- REST是什麼?RESTFul又是什麼?這二者的關係是怎樣的?REST
- 到底什麼樣的 REST 才是最佳 REST?REST
- 如何在Visual Studio中開啟REST SOE模板REST
- 為什麼REST比GraphQL更好? - TomaszJaskuλaREST
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- 什麼是WebAuthn、FIDO 是什麼?Web
- ITIL是什麼意思?ITIL是什麼?
- 什麼是跨域,什麼是同源跨域
- 什麼是.NET平臺、什麼是c#、什麼是ASP.NET。C#ASP.NET
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ###什麼是Linux核心###什麼是MMULinux
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 為什麼要使用MVC+REST+CQRS架構MVCREST架構
- 什麼是REST架構?是不是Web應用都能採取此種架構呢?REST架構Web
- 什麼是塊元素?什麼是行內元素?
- 什麼是API介面,具體是什麼意思?API
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是Unicode,什麼是UTF-8Unicode
- 什麼是藍海?什麼是紅海?什麼是網際網路思維?
- nginx 是什麼,能幹什麼?Nginx