• geoserver的rest服务介绍,搭建java程序


    在geoserver中使用 Restlet 来提供所有的rest服务,并且geoserver中所有的在/rest目录下的请求都被看作为一个restful server,下图就是rest服务的调用过程

    ../../_images/rest-dispatch.png
    当新建一个项目的时候需要新建一个 pom.xml到meven项目中

    <project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>org.geoserver</groupId>
      <artifactId>hello_rest</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>hello_rest</name>
    
      <dependencies>
        <dependency>
          <groupId>org.geoserver</groupId>
          <artifactId>gs-rest</artifactId>
          <version>2.8-SNAPSHOT</version> <!-- change this to the proper GeoServer version -->
        </dependency>
        <dependency>
          <groupId>org.geoserver</groupId>
          <artifactId>gs-main</artifactId>
          <version>2.8-SNAPSHOT</version> <!-- change this to the proper GeoServer version -->
          <classifier>tests</classifier>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.mockrunner</groupId>
          <artifactId>mockrunner</artifactId>
          <version>0.3.6</version>
         <scope>test</scope>
        </dependency>
    
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
         </plugin>
       </plugins>
      </build>
    
    </project>

    建立项目的时候需要继承一个类,以及实现其中的方法
    1. The class org.geoserver.rest.AbstractResource is a convenient base class available when creating new resources. Create a new class called HelloResource in the package org.geoserver.hellorest, which extends from AbstractResource.

      package org.geoserver.hellorest;
      
      import java.util.List;
      import org.geoserver.rest.AbstractResource;
      import org.geoserver.rest.format.DataFormat;
      import org.restlet.data.Request;
      import org.restlet.data.Response;
      
      public class HelloResource extends AbstractResource {
         @Override
         protected List<DataFormat> createSupportedFormats(Request request, Response response) {
      
            return null;
         }
      }
      
    2. The first method to implement is createSupportedFormats(). The purpose of this method is to create mapping from an extension, to a particular format. For now the goal will be to return the text “Hello World” when a ”.txt” extension is requested by the client.

      import java.util.ArrayList;
      import org.geoserver.rest.format.StringFormat;
      ...
      
      @Override
      protected List<DataFormat> createSupportedFormats(Request request, Response response) {
      
         List<DataFormat> formats = new ArrayList();
         formats.add(new StringFormat( MediaType.TEXT_PLAIN ));
      
         return formats;
      }
      
    3. The next step is to override the handleGet() method. This method is called when a GET request is made for the resource.

      @Override
      public void handleGet() {
         //get the appropriate format
         DataFormat format = getFormatGet();
      
         //transform the string "Hello World" to the appropriate response
         getResponse().setEntity(format.toRepresentation("Hello World"));
      }
      

      The above makes use of the getFormatGet() method, whose purpose is to determine the extension being requested by the client, and look up the appropriate format for it. In this case when the client requests the ”.txt” extension, the StringFormat setup in the previous step will be found.

    创建一个application context

    1. The next step is to create an application context that tells GeoServer about the resource created in the previous section. Create the directory src/main/resources under the root of the hello_rest module:

      [hello_rest]% mkdir src/main/resources
    2. Add the following applicationContext.xml file to the src/main/resources directory under the root of thehello_rest module.

       <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
      
       <beans>
          <bean id="hello" class="org.geoserver.hellorest.HelloResource"/>
      
          <bean id="helloMapping" class="org.geoserver.rest.RESTMapping">
             <property name="routes">
                <map>
                  <entry>
                    <key><value>/hello.{format}</value></key>
                    <value>hello</value>
                  </entry>
               </map>
            </property>
          </bean>
      
      </beans>
      

      There are two things to note above. The first is the hello bean which is an instance of the HelloResourceclass created in the previous section. The second is the helloMapping bean, which defines a template for the uri in which the resource will be accessed. The above mapping specifies that the resource will be located at /rest/hello.{format} where format is the representation being requested by the client. As implemented hello.txt is the only supported representation

  • 相关阅读:
    direct path write 等待事件导致数据库hang
    Sql Server数据库视图的创建、修改
    MVC视图中Html.DropDownList()辅助方法的使用
    Ubuntu16.04下安装.NET Core
    Ubuntu16.04下部署golang开发环境
    win7环境下安装运行gotour【转载整理】
    一.Windows I/O模型之选择(select)模型
    Windos下的6种IO模型简要介绍
    编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    串口通信知识点详解
  • 原文地址:https://www.cnblogs.com/wang985850293/p/5148641.html
Copyright © 2020-2023  润新知