使用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,一经查实,立即删除!

相关文章

php分页操作,PHP实现适用于文件内容操作的分页类

本文实例为大家分享了PHP实现文件内容操作的分页类&#xff0c;强调一下只针对文件的操作&#xff0c;供大家参考&#xff0c;具体内容如下class StrPage {private $current; //当前页private $file; //操作文件private $totalPage; //总的页数private $url; //传递的参数priva…

php imagemagick 文档,调用ImageMagick的PHP函数中文文档

bool imagick_writeimage([source image handle],[new name & filetype]) 写图片 UN KNOW USE imagick_writeimages new_handle imagick_clonehandle([image handle]) 复制出新句柄 image_handle imagick_image2blob([blob handle]) 将数据流数据转换成为image数据 ima…

java.util接口_Java 8中java.util.function包中的谓词和使用者接口

java.util接口在上一篇文章中&#xff0c;我写了关于Function接口的内容 &#xff0c;它是java.util.package的一部分。 我还提到了Predicate接口&#xff0c;它是同一包的一部分&#xff0c;在这篇文章中&#xff0c;我将向您展示如何使用Predicate和Consumer接口。 让我们看一…

php datetime 对象,PHP DateTime 对象和 Date 函数的 Demo

DateTime对象//设置时间时区date_default_timezone_set("PRC");$dateFormat "Y-m-d";$dateTimeFormat "Y-m-d H:i:s";//获取当前时间$date new DateTime();echo $date->format($dateTimeFormat) . "\n";//时间2015-01-01加上7年…

将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;包括长度、宽度、文件大小、格式。图片旋转将图片按顺时针旋转。图片模糊对图片进行模糊操作。图片缩放将图片缩小或者放…

drools。drools_Drools Planner重命名为OptaPlanner:宣布www.optaplanner.org

drools。drools我们很自豪地宣布&#xff0c;从版本6.0.0.Beta1开始&#xff0c;将Drools Planner重命名为OptaPlanner。 我们也很高兴推出其新网站&#xff1a; www.optaplanner.org。 OptaPlanner优化了业务资源的使用。 每个组织都面临计划方面的问题&#xff1a;以有限的有…

php gridview,PHP编程:yii2-GridView在开发中常用的功能及技巧总结

《PHP编程&#xff1a;yii2-GridView在开发中常用的功能及技巧总结》要点&#xff1a;本文介绍了PHP编程&#xff1a;yii2-GridView在开发中常用的功能及技巧总结&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。相关主题&#xff1a;YII框架数据网格或者说 Gr…

Spring Boot – spring.config.name –案例研究

当必须在不同配置中使用相同的应用程序代码时&#xff0c;外部化Spring Boot应用程序属性会很有用。 如果spring.config.location配置远离源代码&#xff08;无论如何spring.config.location被认为是最佳实践&#xff09;&#xff0c; spring.config.location环境属性可以用于指…

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手动注册filter,SpringBoot如何注册Servlet、Filter、Listener的几种方式

在Servlet 3.0之前都是使用web.xml文件进行配置&#xff0c;需要增加Servlet、Filter或者Listener都需要在web.xml增加相应的配置。Servlet 3.0之后可以使用注解进行配置Servlet、Filter或者Listener&#xff1b;springboot也提供了使用代码进行注册Servlet、Filter或者Listene…

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

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

php xml相关函数方法,php中对xml读取的相关函数的介绍一

对象 XML解析函数 描述元素 xml_set_element_handler() 元素的开始和结束字符数据 xml_set_character_data_handler() 字符数据的开始外部实体 xml_set_external_entity_ref_handler() 外部实体出现未解析外部实体 xml_set_unparsed_entity_decl_handler() 未解析的外部实体出现…

java调用oracle的函数,从Java调用Oracle函数

我有以下功能规格&#xff1a;FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2,IN_parameter2 IN VARCHAR2,IN_parameter3 IN VARCHAR2,IN_parameter4 IN VARCHAR2,IN_parameter5 IN VARCHAR2,IN_parameter6 IN VARCHAR2)RETURN REFCURTYP;以下是我在J…

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;。 使用基于令牌的身份验证…

matlab 冒泡排序函数,Matlab排序算法-遍历排序、冒泡排序

Before Sort: x 2 1 3 4 6 8 5 7 9------------------------------遍历排序&#xff0c;循环8次&#xff0c;第7次得到结果&#xff1a;1. Sort: x 1 2 3 4 6 8 5 7 92. Sort: x 1 2 3 4 6 8 5 7 93. Sort: x 1 2 3 4 6 8 5 7 94. Sort: x 1 2 3 4 6 8 5 7 95. Sort: x 1…

matlab运行dxcv,MATLAB imresize 函数和 OpenCV resize 函数结果不同

为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同&#xff1f;今年 4 月&#xff0c;我在依照 MATLAB 代码自己写一个卷积神经网络 C 实现的过程中&#xff0c;就发现了这个问题&#xff0c;不过那时问题不是太大&#xff0c;所以也没有给出太多关注。今天在 stackover…

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

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