geoserver API设置图层样式
准备条件
- 图层已发布完毕。存在图层名,如设置了工作区,则为“工作区:图层名”
- 样式已创建完毕。存在样式名,如设置了工作区,则为“工作区:样式名”
使用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;
}
}