GeoServer提供了REST接口强窖,能完成大多數(shù)的服務(wù)器管理任務(wù),方便我們從程序中實現(xiàn)資源的動態(tài)調(diào)度夷都。官方文檔既有API的詳細解釋倡蝙,又有不少示例,在用戶友好方面做的還是不錯的踢步。舉個例子癣亚,官方文檔中對Workspaces的操作如頁面截圖所示:
cURL作為97年就存在的文件傳輸工具,命令簡單犀利获印,能完美支持各種類型的HTTP請求述雾。對于常年混跡于各種命令行、shell之間的高級猿類來講兼丰,用起來得心用手玻孟。但是,對于操著各種程序方言的普通猿來講鳍征,想用起來起碼需要一次語言之間的轉(zhuǎn)換吧黍翎?慢著,官方文檔竟然沒有提供其他語言的用法艳丛!TBD匣掸?
好吧,沒有現(xiàn)成的只能自己來了氮双。這里推薦一個非常好用的HTTP客戶端——Postman碰酝。沒用過的自行百度吧,這里不再贅述戴差。直接進入今天的主題送爸,怎樣使用Postman通過REST API接口與GeoServer進行交互呢?這里我們還是以工作空間的操作為例進行說明。
第一個示例
上圖新建工作空間的cURL命令碱璃,-u選項是指定GeoServer的用戶名和密碼弄痹,-XPOST是指定發(fā)送POST請求饭入,-H是指定該請求的Header內(nèi)容嵌器,-d是POST請求發(fā)送的數(shù)據(jù),該例子中是一個XML字符串谐丢,最后是API接口的地址爽航。
好,我們在Postman中逐項設(shè)置乾忱。首先在Postman中新建一個請求讥珍,類型選為POST,接口地址自行填進去窄瘟。
- 用戶驗證
需要Postman中設(shè)置用戶名和密碼衷佃,這里選擇Basic Auth即可。這里我定義了一個變量{{baseURL}}蹄葱,來代替前面那段相同的URL氏义。
- Headers
Headers標簽里面指定Content-Type為text/xml。
- Body
Body標簽里面指定要發(fā)送的數(shù)據(jù)图云,該例子中是原始字符串惯悠,我們就選擇raw類型。
就這樣竣况,第一條命令就翻譯完畢克婶,可以點Send試一下了,請求的結(jié)果會顯示在下面的Response框中丹泉。
從官方文檔來看情萤,GeoServer的接口支持XML和JSON兩種格式。如果需要發(fā)送JSON內(nèi)容的話摹恨,只需要改兩個地方紫岩,一個是Headers標簽中指定Content-Type為application/json;另一個是在Body中填寫和XML對應(yīng)的JSON字符串睬塌。
再來一個
上例中是發(fā)送POST請求泉蝌,這節(jié)再舉一個GET請求的例子。
想獲取我們剛才創(chuàng)建的工作空間的詳情揩晴,官方文檔中是這樣的:
比上一個例子更簡單勋陪,只需要在Postman中填入Authorization和Headers標簽的內(nèi)容即可。Accept可以是text/xml硫兰,也可以是application/json诅愚,視需求而定。
由人工翻譯到自動翻譯
上述玩法其實還是挺麻煩的,只是把cURL命令經(jīng)過人工翻譯形成可操作的界面违孝,其他方面毫無新意刹前。Postman也充分考慮到了這一點,其中import功能可以完美地實現(xiàn)自動翻譯雌桑。我們只需要把官方文檔中的cURL命令復(fù)制粘貼到文本框中喇喉,就可以得到該命令對應(yīng)的新請求,就是這么方便校坑!
百尺竿頭更進一步
如果只是做API接口測試的話拣技,上面這些功能就已經(jīng)足夠強大了。但是耍目,對于不同語言的程序開發(fā)人員來說膏斤,還希望知道在特定編程語言、甚至特定HTTP庫中邪驮,該怎樣實現(xiàn)發(fā)送請求澳妗?
其實毅访,Postman早已考慮到了這種需求沮榜,目前已支持把請求生成多種編程語言的代碼段,真正實現(xiàn)了一鍵轉(zhuǎn)換俺抽。這個功能藏的比較隱蔽敞映,見下圖紅框。只要點開Code按鈕磷斧,就知道它支持多少種編程語言了振愿。
Postman給我們通過REST API管理GeoServer帶來了很大便利,還有很多功能有待發(fā)掘弛饭。其他命令請自行練習冕末,舉一反三。
參考
GeoServer文檔地址:https://docs.geoserver.org/stable/en/user/rest/index.html
curl命令參考文檔:https://curl.haxx.se/docs/manual.html
XML轉(zhuǎn)成json:http://www.utilities-online.info/xmltojson/
轉(zhuǎn)載請注明出處http://www.reibang.com/p/954ea8fa7279