02
2020
06

SpringBoot构建RESTful Web服务

构建RESTful Web服务

一、环境要求

二、Spring Initializr

对于所有Spring应用程序,您应该从Spring Initializr开始。Initializr提供了一种快速的方法来提取应用程序所需的所有依赖项,并为您完成了许多设置。

dd

一步步next,直到创建完毕。

三、pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.3.0.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.radarsoft</groupId>
   <artifactId>springbootdemo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>springbootdemo</name>
   <description>Demo project for Spring Boot</description>

   <properties>
       <java.version>1.8</java.version>
   </properties>

   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>

</project>
public class Greeting {
   private final long id;
   private final String content;

   public Greeting(long id, String content) {
       this.id = id;
       this.content = content;
   }

   public long getId() {
       return id;
   }

   public String getContent() {
       return content;
   }
}

此应用程序使用Jackson JSON库自动将类型的实例Greeting封送为JSON。网络启动器默认包含Jackson。

四、创建资源控制器

在Spring构建RESTful Web服务的方法中,HTTP请求由控制器处理。这些组件由@RestController注释标识,并且GreetingController以下清单(从中GreetingController.java)所示通过返回该类的新实例来处理GET请求:/greeting

@RestController
public class GreetingController {
   private static final String template = "hello ,%s";
   private final AtomicLong counter = new AtomicLong();

   @GetMapping("/greeting")
   public Greeting greeting(@RequestParam(value = "name",defaultValue = "World")String name){
       return new Greeting(counter.incrementAndGet(),String.format(template,name));
   }
}

控制器简洁明了,但是内部却有很多事情要做。我们将其逐步分解。

@RestController注解:该注释将类标记为控制器,其中每个方法均返回域对象而不是视图。这是同时包含@Controller和@ResponseBody的简写。

该Greeting对象转换为JSON。借助Spring的HTTP消息转换器支持,您无需手动进行此转换。由于Jackson 2在类路径中,因此MappingJackson2HttpMessageConverter会自动选择Spring的将Greeting实例转换为JSON。

@GetMapping注解:注释可以确保HTTP GET请求到/greeting被映射到greeting()方法。

还有其他HTTP动词的伴随注释(例如@PostMappingPOST)。@RequestMapping它们都有一个注释,它们都源自这些注释,并且可以用作同义词(例如@RequestMapping(method=GET))。

@RequestParam注解:将查询字符串参数的值绑定name到方法的name参数greeting()。如果name请求中没有该参数,则使用默认参数defaultValue。

五、启动运行

在浏览器中输入:http://localhost:8080/greeting

无参数,则使用默认参数,如下图所示:

{"id":1,"content":"Hello, World!"}

http://localhost:8080/greeting?name=User.有参数,运行如下:

{"id":2,"content":"Hello, User!"}


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。