准備條件
- 圖層已發布完畢。存在圖層名,如設置了工作區,則為“工作區:圖層名”
- 樣式已創建完畢。存在樣式名,如設置了工作區,則為“工作區:樣式名”
使用REST API
Geoserver REST API地址:點我
使用layers
圖層操作API,使用PUT方法修改圖層屬性:
觀察API參數,xml形式的參數以layer
開頭:
切換到application/json形式,注意此時xml中的layer
卻在此處消失了:
但實際調用的時候,卻要將參數用layer
包裹,使用postman的情況如下:
defaultStyle.name
設為已經創建的樣式名即可
注意geoserver的用戶驗證方式:
代碼調用方式
/**
* @method 更改圖層屬性
* @param {string} workspace 工作區
* @param {string} layername 圖層名
* @param {object} value 更新的屬性
*/
async function modify_layer(workspace, layername, value) {
try{
if(!_.isObject(value)) //_ 為lodash
throw Error('參數格式錯誤,value應為對象');
await request({
method: 'PUT',
// config.geoserver_url為geoserver地址(如果是本機,則為http://127.0.0.1:8080/geoserver)
uri: config.geoserver_url + `/rest/layers/${workspace}:${layername}`,
headers: {
'Content-Type': 'application/json',
// config.geoserver_auth為geoserver賬號名與密碼以(賬號名:密碼)的形式經過base64加密后的字符串
// 如果初始賬號admin與初始密碼geoserver沒變,則geoserver_auth為Basic YWRtaW46Z2Vvc2VydmVy
'Authorization': config.geoserver_auth
},
body: {
"layer": value
},
json: true
});
}catch(err) {
if(err) throw err;
}
}