O GeoServer fornece uma interface RESTful através da qual podemos configurar uma instância usando chamadas HTTP simples. Usando a interface REST, podemos configurar o GeoServer sem a necessidade de usar a interface de administração Web.
Para realizar as operações utilizaremos o cURL (uma ferramenta de linha de comando para executar solicitações HTTP e transferência de arquivos), porém elas podem ser adaptadas para qualquer ferramenta ou biblioteca HTTP.
Para este exemplo, baixei o cURL (curl.exe), e o coloquei na pasta C:\Util\curl, assim como o arquivo zip com o shape (roads.zip) e o arquivo sld (roads_style.sld).
1. Adição de novo workspace
Para iniciar, vou criar um workspace com o nome “acme”. Para isso vou executar o comando abaixo na linha de comando através do cURL:
curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<workspace><name>acme</name></workspace>" http://localhost:8080/geoserver/rest/workspaces
Se for executado corretamento, você deverá receber a seguinte mensagem:
< HTTP/1.1 201 Created ... < Location: http://localhost:8080/geoserver/rest/workspaces/acme
Para verificar o que foi criado no GeoServer você pode executar o seguinte comando:
curl -v -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost:8080/geoserver/rest/workspaces/acme
2. Adição de um shapefile
Neste passo, iremos criar um novo store a partir de um arquivo shapefile.
Para o exemplo é necessário o arquivo states.zip para criar um novo store com o nome de states.
curl -v -u admin:geoserver -XPUT -H "Content-type: application/zip" --data-binary @roads.zip http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/file.shp
O identificador states na URI refere-se ao nome da store a ser criada. Para criar com outro nome, a URI seria http://localhost:8080/geoserver/rest/workspaces/acme/datastores/outronome/file.shp
Se for executado corretamento, você deverá receber a seguinte mensagem:
< HTTP/1.1 201 Created
Para verificar o que foi criado no GeoServer você pode executar o seguinte comando:
curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads.xml
Quando um shapefile é adicionado, automaticamente é criada uma featureType. A informação desta featureType, pode ser obtida através do seguinte comando:
curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/featuretypes/roads.xml
3. Adição de um estilo
Primeiro vamos criar a estrutura do novo estilo:
curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<style><name>roads_style</name><filename>roads.sld</filename></style>" http://localhost:8080/geoserver/rest/styles
Se for executado corretamento, você deverá receber a seguinte mensagem:
< HTTP/1.1 201 Created
Agora que a estrutura já está criada, vamos fazer o upload do arquivo SLD:
curl -v -u admin:geoserver -XPUT -H "Content-type: application/vnd.ogc.sld+xml" -d @roads.sld http://localhost:8080/geoserver/rest/styles/roads_style
Se for executado corretamento, você deverá receber a seguinte mensagem:
< HTTP/1.1 200 OK
4. Vinculando um estilo a uma camada
Para finalizar vamos vincular a camada ao estilo que foi criado:
curl -v -u admin:geoserver -XPUT -H "Content-type: text/xml" -d "<layer><defaultStyle><name>roads_style</name></defaultStyle></layer>" http://localhost:8080/geoserver/rest/layers/acme:roads
Se for executado corretamento, você deverá receber a seguinte mensagem:
< HTTP/1.1 200 OK
Parabéns! Agora você já tem sua layer publicada no GeoServer.
5. Apagando uma camada
Caso você queira apagar a configuração de alguma camada, você pode fazer utilizando o comando abaixo, mas lembre que se sua fonte de dados (store) for shapefile, este comando desfaz apenas a configuração da camada, e não exclui o shapefile na pasta de dados do GeoServer.
curl -u admin:geoserver -XDELETE http://localhost:8080/geoserver/rest/layers/acme:roads