使用Spring Boot构建RESTFul服务

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将Swagger与Spring Boot REST API集成

在上一篇文章中&#xff0c;我谈到了我使用Spring Boot创建RESTFul Services的经验。 在创建REST API时&#xff0c;正确的文档是其中的必需部分。 昂首阔步是什么&#xff1f; Swagger &#xff08;Swagger 2&#xff09;是用于描述和记录REST API的规范。 它指定了REST Web…

php滴滴平台接口,图片服务API文档

简介滴滴云图片服务API提供标准的轻量级无状态HTTP接口&#xff0c;支持用户对数据的全方位管理。接口概览API描述图片信息获取文件的基本信息&#xff0c;包括长度、宽度、文件大小、格式。图片旋转将图片按顺时针旋转。图片模糊对图片进行模糊操作。图片缩放将图片缩小或者放…

java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

JSP九大内置对象JSP内置对象是Web容器创建的一组对象&#xff0c;不使用new关键就可以使用的内置对象。int[] value{60,70,80};for(int i:value){out.println(i);}%>Web程序的请求响应模式用户发送请求(request)服务器给用户响应(response)out对象&#xff1a;out对象是JspW…

java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

java中接口文件创建世界各地的所有Java开发人员都将至少使用以下接口之一&#xff1a;java.lang.Runnable&#xff0c;java.awt.event.ActionListener&#xff0c;java.util.Comparator&#xff0c;java.util.concurrent.Callable。 声明的接口之间有一些共同的特征&#xff0c…

Java命令行界面(第12部分):CLAJR

第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 &#xff08;CLAJR&#xff09;。 该“库”是单个Java源文件&#xff08; CLAJR-0.9.java &#xff09;&#xff0c; 可从SourceForge下载 。 CLAJR的主页当前显示2006年版权日期&#xff…

specs.4.8.gz_使用Specs2和客户端API 2.0进行富有表现力的JAX-RS集成测试

specs.4.8.gz毫无疑问&#xff0c; JAX-RS是一项杰出的技术。 即将发布的规范JAX-RS 2.0带来了更多的强大功能&#xff0c;尤其是在客户端API方面。 今天的帖子的主题是JAX-RS服务的集成测试。 有很多优秀的测试框架&#xff0c;例如REST&#xff0c;可以确保提供帮助&#xff…

了解OAuth2令牌认证

1.简介 在本教程中&#xff0c;我们将了解OAuth2令牌身份验证 &#xff0c;以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌&#xff0c;该令牌随后可用于访问服务器上的授权API&#xff08;在OAuth术语中仅是受保护的资源&#xff09;。 使用基于令牌的身份验证…

Java 9:好的,坏的和私有的接口方法

Java 9 是在几周前发布的。 查看发行说明 &#xff0c;其中包含许多有趣的功能。 不过&#xff0c;我觉得并非一切都是不如甲骨文和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势&#xff0c;分别是好&#xff0c;坏和丑陋。 让我们从好的开始。 Birdman&#xff08;20…

PagingAndSortingRepository –如何与Thymeleaf一起使用

在本教程中&#xff0c;我将演示如何通过分页显示Thymeleaf中的企业客户列表。 1 –项目结构 我们有一个正常的Maven项目结构。 2 –项目依赖性 除了正常的Spring依赖关系之外&#xff0c;我们还添加Thymeleaf和hsqldb&#xff0c;因为我们使用的是嵌入式数据库。 <?x…

matlab里方差分析的盒子图怎么看,Matlab方差分析

Matlab 方差分析(T检验)在工农业生产和科学研究中,经常遇到这样的问题:影响产品产量、质量的因素很多,我们需要了解在这众多的因素中,哪些因素对影响产品产量、质量有显著影响.为此,要先做试验,然后对测试的结果进行分析.方差分析就是分析测试结果的一种方法.在方差分析中,把在…

使用Okta的单点登录保护您的Vert.x服务器

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Vert.x是Spring生态系统中增长最快的元素之一&#xff0c;保护Vert.x服务器可能是一个…

Apache Kafka简介

什么是Apache Kafka&#xff1f; Apache Kafka是一个分布式流系统&#xff0c;具有发布和订阅记录流的功能。 在另一方面&#xff0c;它是企业消息传递系统。 它是一个快速&#xff0c;水平可扩展和容错的系统。 Kafka有四个核心API&#xff0c; 生产者API&#xff1a; 该API允…

oracle查看存储过程最近编译,Oracle恢复被误编译覆盖的存储过程

同事在写Oracle存储过程时候&#xff0c;是在以前已经写好的过程基础上修改的&#xff0c;想换个名字&#xff0c;由于疏忽没有改名字就编译了&#xff0c;编译完才意识到。这时原来的那个已经没有了。找我想办法恢复回原来的那个过程。通过查资料想到个方法&#xff0c;也不知…

oracle安装 redo log file,Oracle Dump Redo Log File 说明

关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)使用一. dump redo 说明关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)…

unity 飞机 残骸模型_训练残骸模式– Java 8中的改进实现

unity 飞机 残骸模型Venkat Subramaniam在今天的演讲中提到了有关“级联方法”模式或“火车残骸”模式的内容&#xff0c;如下所示&#xff1a; >someObject.method1().method2().method3().finalResult()很少有人会将此与构建器模式相关联&#xff0c;但事实并非如此。 无…

datastage配置oracle,IBM Datastage8.5配置问题

大家好&#xff0c;最近因学习需要&#xff0c;在虚拟机REHL5.5上安装了IBM Datastage8.5的服务器端&#xff0c;在windows端安装客户端&#xff0c;调试连接时&#xff0c;提示密码不正确&#xff0c;我修改了密码&#xff0c;重启了服务器&#xff0c;还是提示密码不正确&…

使用Spring @Transactional进行数据源路由

卡尔帕帕&#xff08;Carl Papa&#xff09;在Spring框架中使用方面来确定要使用的DataSource &#xff08;读写或只读&#xff09;启发了我。 所以&#xff0c;我正在写这篇文章。 我必须承认&#xff0c;我对Spring的AbstractRoutingDataSource早已熟悉。 但是我不知道在哪里…

linux设置新硬盘权限,Linux 下挂载新硬盘以及更改为普通权限

1、启动终端&#xff0c;以root用户登录2、查看硬盘信息&#xff1a;#fdisk -l3、进入磁盘&#xff0c;对磁盘进行分区&#xff1a;#fdisk /dev/sda(注意看你要挂载哪一个磁盘&#xff0c;我的是sda&#xff0c;有的是sdb)4、格式化分区&#xff1a;#mkfs.ext3 /dev/sda1 //注&…

使用Payara Micro的Easy Java EE Microservices

想知道如何开始使用Java EE Microservices&#xff1f; 使用Java EE API只需很少的步骤即可部署微服务。 许多人认为Java EE无法与微服务一起使用&#xff0c;但事实并非如此……特别是如果您仅使用服务所需的Java EE规范。 在这篇简短的文章中&#xff0c;我将演示如何使用Jav…

linux终端lex程序运行,lex的简单使用

Lex & Flex 简介Lex是lexical compiler的缩写&#xff0c;是Unix环境下非常著名的工具&#xff0c; Lex (最早是埃里克施密特和 Mike Lesk 制作)是许多 UNIX 系统的标准词法分析器(lexical analyzer)产生程式&#xff0c;而且这个工具所作的行为被详列为 POSIX 标准的一部分…