使用Spring Boot构建RESTFul服务

本文介绍了如何使用Spring Boot创建一个简单的RESTful服务。通过Spring Initializr生成Maven项目,然后通过@RestController注解实现控制器,处理REST请求。文章还提到了在遇到版本问题时如何解决,并展示了项目的最终结构和运行情况。
摘要由CSDN通过智能技术生成

每个人都在谈论微服务,例如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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值