每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等。由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想使用Spring Boot实现一个简单的RESTFul服务。
因此,我从Spring文档开始。 这很简单。 您可以使用“ Spring Initializr ”创建项目的结构。 这是一个在线工具,您可以在其中将所有所需的依赖项添加到项目POM文件中。 由于我是Maven的忠实拥护者,因此我正在生成一个Maven项目。
在Spring Initializr UI中,您可以选择语言,Spring Boot版本,项目组ID,工件名称等。请参见下面的屏幕快照,以获取我在生成项目时提供的信息。
当点击“ Generate Project”时,它将压缩的maven项目下载到您的计算机中。 解压缩并导入到IDE中。 初始项目结构如下。
在我的HelloWorld REST服务实现中,它接受用户名作为路径参数(或URL参数),并返回问候语JSON有效负载(响应)。 因此,我希望通过以下URL调用来调用我的REST服务:APP_NAME / api / hello / chandana。
@RestController是使用Spring实现RESTFul服务的一种方式。 因此,这个新的控制器类将命名为HelloWorldController。 所以我的HelloWorldController类如下所示。
package com.chandana.helloworld;
import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloWorldController {
@RequestMapping("/")
public String welcome() {//Welcome page, non-rest
return "Welcome to RestTemplate Example.";
}
@RequestMapping("/hello/{name}")
public Greeting message(@PathVariable String name) {
Greeting msg = new Greeting(name, "Hello " + name);
return msg;
}
}
注意:如果您发现Spring Boot 1.5.6无法正确导入类并在IDE中显示错误消息“无法解析符号RestController”,则需要降级项目中使用的spring版本。 Spring Boot 1.5.6默认使用Spring 4.3.10.RELEASE依赖关系,需要将其降级到4.3.9.RELEASE。 因此,请在POM文件的属性部分添加<spring.version> 4.3.9.RELEASE </spring.version>。
一切就绪。 我可以使用以下maven命令构建并运行Spring Boot项目。 它将编译项目并运行它。
mvn spring-boot:运行
启动服务器时,您可以在控制台中注意到注册的REST服务URL,如下所示
INFO 9556 — [main] swsmmaRequestMappingHandlerMapping:将“ {[/ api / hello / {name}]} ”映射到公共com.chandana.helloworld.bean.Greeting com.chandana.helloworld。 HelloWorldController 。 消息 (java.lang.String)
INFO 9556 — [main] swsmmaRequestMappingHandlerMapping:将“ {[/ api /]} ”映射到公共java.lang.String com.chandana.helloworld。 HelloWorldController 。 欢迎 ()2017-0
最后,可以通过访问以下URL来调用REST服务:http:// localhost:8080 / api / hello / NAME
最终项目结构:
问候POJO类:
package com.chandana.helloworld.bean;
public class Greeting {
private String player;
private String message;
public Greeting(String player, String message) {
this.player = player;
this.message = message;
}
public String getPlayer() {
return player;
}
public void setPlayer(String player) {
this.player = player;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chandana</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring.version>4.3.9.RELEASE</spring.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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
HelloWorldController类:
package com.chandana.helloworld;
import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloWorldController {
@RequestMapping("/")
public String welcome() {//Welcome page, non-rest
return "Welcome to RestTemplate Example.";
}
@RequestMapping("/hello/{name}")
public Greeting message(@PathVariable String name) {
Greeting msg = new Greeting(name, "Hello " + name);
return msg;
}
}
结论
看起来,使用Spring Boot实现RESTFul服务非常简单。 因此,我有了一个使用Spring Boot实现“ Yield Price Sri Lanka ” Android应用程序后端的想法。 此外,希望实现一个管理用户界面来管理价格和商品信息,以及一个公共网络用户界面来为没有Android应用程序的用户显示价格明细。 保持联系。
翻译自: https://www.javacodegeeks.com/2017/09/building-restful-service-using-spring-boot.html