我们之前学习过如何将关系数据库中的数据轻转化为REST服务可访问的信息,轻松写意的例子。基于Spring来访问REST服务也非常简单,只需要对POJO进行标注,通过Spring提供的RestTemplate
就能轻松搞定,来一探究竟吧。
开发环境
- IDE+Java环境(JDK 1.7或以上版本)
- Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)
POM文件如下:
<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.tianmaying</groupId>
<artifactId>rest-service-consuming</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>rest-service-consuming</name>
<description>demo of consuming rest service by spring RestTemplate</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.mobile</groupId>
<artifactId>spring-mobile-device</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.2</version>
<scope>provided</scope>
</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>
jackson-databind包提供了JSon对象转成Java类的辅助功能。lombok包提供了简单的标注来帮助我们简化消除一些必须有但是臃肿的java 代码,比如getter、setter和构造函数等,这些函数一般我们通过IDE自动生成,有了lombok三两个标注就轻松搞定。
提示
为了让Eclipse识别lombok,除了引入lombok JAR包之外,你需要安装lombok,这样Eclipse才不会报警告(否则即使你标注了@Data
,如果你不写setter和getter代码的话,Eclipse会有警告)。安装非常简单,只需要到lombok网站中下载,然后双击Jar包运行即可。
将JSON自动转换为POJO
我们假定REST服务返回的JSON格式如下:
{
id:100
name: "zhangsan"
address: {
city: "beijing"
steet: "yiheyuan lu 5"
}
}
对应我们新建两个类来存储JSON中的信息
User.java
package com.tianmaying.springboot.restconsuming;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
private Long id;
private String name;
private Address address;
}
Address.java
package com.tianmaying.springboot.restconsuming;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Address {
private String city;
private String street;
}
上面两个类都具有两个标注@Data
和@JsonIgnorePoperties
。其中:
-
@Data
标注为每个类都提供了getter方法、setter方法和toString
方法 -
@JsonIgnorePoperties
时Jackson的JSON处理库提供的标注,表示任何没有绑定到该类的属性都忽略即可
访问REST服务
Spring提供一个模板类RestTemplate
来调用REST Web服务,通过这个类你只需要一行代码即可完成调用,而且将返回的JSON数据自动绑定到类的属性。
App.java
package com.tianmaying.springboot.restconsuming;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class App implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(App.class);
public static void main(String args[]) {
SpringApplication.run(App.class);
}
@Override
public void run(String... strings) throws Exception {
RestTemplate restTemplate = new RestTemplate();
User user = restTemplate.getForObject("http://tianmaying.com/mockapi/user/1", User.class);
log.info(user.toString());
}
}
因为Jackson JSON处理包在类路径中,RestTemplate
会基于它将REST服务返回的JSON数据转换成一个User
对象。
这里只演示了GET
请求,基于RestTemplate
你可以进行POST
、PUT
和 DELETE
请求,大家去试验一下吧!
https://www.tianmaying.com/tutorial/spring-rest-consuming
相关推荐
1. **Spring Boot**: Spring Boot是Spring框架的一个扩展,它简化了创建独立的、生产级别的基于Spring的应用程序。通过自动配置、起步依赖和内嵌的HTTP服务器(如Tomcat或Jetty),Spring Boot使得开发过程更加高效...
这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心框架提供依赖注入和整体架构支持,而Spring MVC作为其Web模块,专门用于构建...
将Wink与Spring集成,可以充分利用两者的优点,实现高效、灵活的REST服务开发。 集成Spring和Apache Wink的主要目标是利用Spring的IOC容器管理Wink的组件,如资源、过滤器和消息处理器,以及利用Spring的数据访问和...
这个压缩包文件“Java_学习如何使用Spring Data REST使用基于REST的超媒体数据持久化.zip”包含了关于如何利用Spring Data REST来实现基于REST的服务以及数据持久化的教程资料。以下是关于这个主题的详细知识讲解。 ...
基于spring mina 封装 rest 形式接口服务器,摆脱对tomcat,resin等服务器的依赖,基于spring,mina本身可提供tcp/ip接口,同时封装rest可方面提供http形式rest接口访问服务,方便接入
Spring MVC 提供了对REST的支持,使得开发REST服务变得简单。 1. **配置Spring MVC** - 创建`web.xml`:这是Servlet容器的部署描述符,用于配置DispatcherServlet,它是Spring MVC的入口点。 - 配置`servlet-...
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
Spring Data REST 是基于 Spring Boot 和 Spring Data 项目构建 RESTful API 的强大工具,极大地简化了开发者的工作。在传统的 RESTful 开发中,我们需要手动编写控制器(Controller)来处理 HTTP 请求并映射到业务...
在Spring框架中,可以使用Spring MVC或者Spring WebFlux模块创建REST服务。控制器类中定义处理HTTP请求的方法,通过@RequestMapping注解指定请求路径和方法类型。 2. **JSON交互**:JSON(JavaScript Object ...
《基于Spring Boot的家政服务系统设计与实现》 在当今信息化社会,家政服务行业的管理和服务模式也在逐渐向数字化转型。Spring Boot作为一款高效、轻量级的Java开发框架,已经成为构建现代化Web应用的首选工具。本...
本项目“新一代基于Spring Boot+Spring Security+JWT实现给RestApi增加权限和认证控制”正是针对这一需求而设计的。以下是关于这个项目及其相关技术的详细说明。 **Spring Boot** Spring Boot简化了Spring应用的...
CXF同样支持REST服务的开发,你可以使用JAX-RS(Java API for RESTful Web Services)规范来实现。例如,通过使用@Path、@GET、@POST等注解,你可以指定资源路径、HTTP方法以及处理这些请求的方法。 为了将CXF与...
### 构建基于Spring的REST服务 #### 一、概览与基础知识 在构建REST服务时,选择Spring作为开发框架是非常普遍的选择。Spring框架不仅功能强大且社区活跃,还提供了丰富的特性和工具来帮助开发者快速搭建高效的...
Xfire是一款早期的、基于Spring的Web服务实现库,它简化了创建和部署Web服务的过程。虽然现在更多的开发者倾向于使用Apache CXF或Spring Web Services等更现代的工具,但了解Xfire在Spring环境中的使用仍具有一定的...
标题"基于Spring的Restlet实例"意味着我们将探讨如何在Spring环境中集成和使用Restlet库来开发REST服务。这通常涉及以下几个关键知识点: 1. **RESTful服务基础**:REST是一种软件架构风格,强调通过HTTP协议暴露...
Spring Boot是Spring框架的一个扩展,它简化了创建独立的、生产级别的基于Spring的应用程序的过程。Spring Boot的核心特性包括自动配置、起步依赖和运行时健康检查。在这个项目中,Spring Boot用于构建微服务,提供...
在REST服务中,通常使用JSON Web Token (JWT)进行身份验证和授权。Spring Security可以通过添加JWT相关的库来支持这种机制。当用户成功登录后,服务器会返回一个JWT,客户端随后将这个令牌附在每次请求的...
本篇文章将深入探讨Spring MVC 3.2中配置REST服务的关键点。 首先,`dispatcher-servlet.xml`是Spring MVC的核心配置文件,它定义了Spring MVC如何处理HTTP请求。在配置REST服务时,我们需要在这个文件中声明一些...
这是一个基于Spring Boot和MongoDB的REST API应用程序,实现了图书馆系统的增删改查(CRUD)功能。项目通过spring Boot框架提供了RESTful风格的Web服务接口,并使用MongoDB作为数据存储解决方案。通过该项目,用户...