我们之前学习过如何将关系数据库中的数据轻转化为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 Boot、Spring Security、JWT的REST服务安全认证项目是一个典型的现代Web服务安全实现案例。Spring Boot简化了Spring应用的初始搭建以及开发过程,提供了一种快速开发、配置简单的方式,适合用来创建独立...
Spring Security是一个功能强大、可高度定制的身份验证和访问控制框架,它是保护基于Spring的应用的安全事实上的标准。JWT(JSON Web Token)是一种紧凑型、URL安全的方式,用于在各方之间以JSON对象的形式安全地...
Spring Data REST 是基于 Spring Boot 和 Spring Data 项目构建 RESTful API 的强大工具,极大地简化了开发者的工作。在传统的 RESTful 开发中,我们需要手动编写控制器(Controller)来处理 HTTP 请求并映射到业务...
这个基于Spring Boot和Security OAuth的简单受保护REST服务示例,为开发者提供了一个很好的学习资源,帮助他们理解如何构建安全、现代的Web服务。通过这个示例项目,学习者可以掌握Spring Boot的便捷性和OAuth的安全...
本项目“基于Spring OAuth 2保护的REST服务样板项目”,以Spring框架为基础,结合OAuth 2协议,提供了一个安全、可靠、可扩展的REST服务开发模板。Spring框架是Java平台上最流行的开源框架之一,以其轻量级、依赖...
在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项目实现REST in Practice含服务端与安卓客户端是一个综合性的软件开发项目,其核心在于展示如何利用RESTful原则构建一个实际应用。REST(Representational State Transfer)是一种软件架构风格,主要用于...