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.

Fonte: GeoServer Documentation - cURL