`

基于Spring访问REST服务

 
阅读更多

我们之前学习过如何将关系数据库中的数据轻转化为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你可以进行POSTPUT和 DELETE请求,大家去试验一下吧!

 

 

https://www.tianmaying.com/tutorial/spring-rest-consuming

分享到:
评论

相关推荐

    spring-data-rest-angular例子

    1. **Spring Boot**: Spring Boot是Spring框架的一个扩展,它简化了创建独立的、生产级别的基于Spring的应用程序。通过自动配置、起步依赖和内嵌的HTTP服务器(如Tomcat或Jetty),Spring Boot使得开发过程更加高效...

    基于Spring和Spring MVC实现可跨域访问的REST服务

    这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心框架提供依赖注入和整体架构支持,而Spring MVC作为其Web模块,专门用于构建...

    apache wink集成spring 开发rest服务

    将Wink与Spring集成,可以充分利用两者的优点,实现高效、灵活的REST服务开发。 集成Spring和Apache Wink的主要目标是利用Spring的IOC容器管理Wink的组件,如资源、过滤器和消息处理器,以及利用Spring的数据访问和...

    Java_学习如何使用Spring Data REST使用基于REST的超媒体数据持久化.zip

    这个压缩包文件“Java_学习如何使用Spring Data REST使用基于REST的超媒体数据持久化.zip”包含了关于如何利用Spring Data REST来实现基于REST的服务以及数据持久化的教程资料。以下是关于这个主题的详细知识讲解。 ...

    spring mina 封装rest接口服务器

    基于spring mina 封装 rest 形式接口服务器,摆脱对tomcat,resin等服务器的依赖,基于spring,mina本身可提供tcp/ip接口,同时封装rest可方面提供http形式rest接口访问服务,方便接入

    spring mvc rest基础学习demo

    Spring MVC 提供了对REST的支持,使得开发REST服务变得简单。 1. **配置Spring MVC** - 创建`web.xml`:这是Servlet容器的部署描述符,用于配置DispatcherServlet,它是Spring MVC的入口点。 - 配置`servlet-...

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    Spring Data REST简化RESTful开发.docx

    Spring Data REST 是基于 Spring Boot 和 Spring Data 项目构建 RESTful API 的强大工具,极大地简化了开发者的工作。在传统的 RESTful 开发中,我们需要手动编写控制器(Controller)来处理 HTTP 请求并映射到业务...

    rest+spring+hibernate

    在Spring框架中,可以使用Spring MVC或者Spring WebFlux模块创建REST服务。控制器类中定义处理HTTP请求的方法,通过@RequestMapping注解指定请求路径和方法类型。 2. **JSON交互**:JSON(JavaScript Object ...

    基于Spring Boot家政服务系统lw+ppt.rar

    《基于Spring Boot的家政服务系统设计与实现》 在当今信息化社会,家政服务行业的管理和服务模式也在逐渐向数字化转型。Spring Boot作为一款高效、轻量级的Java开发框架,已经成为构建现代化Web应用的首选工具。本...

    新一代基于Spring Boot+Spring Security+JWT实现给RestApi增加权限和认证控制的项目

    本项目“新一代基于Spring Boot+Spring Security+JWT实现给RestApi增加权限和认证控制”正是针对这一需求而设计的。以下是关于这个项目及其相关技术的详细说明。 **Spring Boot** Spring Boot简化了Spring应用的...

    cxf+spring发布webservice和restservice

    CXF同样支持REST服务的开发,你可以使用JAX-RS(Java API for RESTful Web Services)规范来实现。例如,通过使用@Path、@GET、@POST等注解,你可以指定资源路径、HTTP方法以及处理这些请求的方法。 为了将CXF与...

    Building-REST-Services-with-Spring

    ### 构建基于Spring的REST服务 #### 一、概览与基础知识 在构建REST服务时,选择Spring作为开发框架是非常普遍的选择。Spring框架不仅功能强大且社区活跃,还提供了丰富的特性和工具来帮助开发者快速搭建高效的...

    基于Spring下的webservice

    Xfire是一款早期的、基于Spring的Web服务实现库,它简化了创建和部署Web服务的过程。虽然现在更多的开发者倾向于使用Apache CXF或Spring Web Services等更现代的工具,但了解Xfire在Spring环境中的使用仍具有一定的...

    基于Spring的Restlet实例

    标题"基于Spring的Restlet实例"意味着我们将探讨如何在Spring环境中集成和使用Restlet库来开发REST服务。这通常涉及以下几个关键知识点: 1. **RESTful服务基础**:REST是一种软件架构风格,强调通过HTTP协议暴露...

    springboot集成mybatis+rest接口提供+文件访问自定义配置

    Spring Boot是Spring框架的一个扩展,它简化了创建独立的、生产级别的基于Spring的应用程序的过程。Spring Boot的核心特性包括自动配置、起步依赖和运行时健康检查。在这个项目中,Spring Boot用于构建微服务,提供...

    REST-spring-security.rar_java rest_java security_rest_rest secu

    在REST服务中,通常使用JSON Web Token (JWT)进行身份验证和授权。Spring Security可以通过添加JWT相关的库来支持这种机制。当用户成功登录后,服务器会返回一个JWT,客户端随后将这个令牌附在每次请求的...

    spring mvc 3.2 rest配置 文件

    本篇文章将深入探讨Spring MVC 3.2中配置REST服务的关键点。 首先,`dispatcher-servlet.xml`是Spring MVC的核心配置文件,它定义了Spring MVC如何处理HTTP请求。在配置REST服务时,我们需要在这个文件中声明一些...

    基于Spring Boot和MongoDB的图书馆系统REST API应用.zip

    这是一个基于Spring Boot和MongoDB的REST API应用程序,实现了图书馆系统的增删改查(CRUD)功能。项目通过spring Boot框架提供了RESTful风格的Web服务接口,并使用MongoDB作为数据存储解决方案。通过该项目,用户...

Global site tag (gtag.js) - Google Analytics