Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring认证指南:了解如何使用 Spring 的 RESTful Web 服务

Spring认证指南:了解如何使用 Spring 的 RESTful Web 服务

原创
作者头像
IT胶囊
发布于 2022-01-25 07:51:32
发布于 2022-01-25 07:51:32
86900
代码可运行
举报
文章被收录于专栏:IT技能应用IT技能应用
运行总次数:0
代码可运行

原标题:Spring认证中国教育管理中心-了解如何使用 Spring 的 RESTful Web 服务(Spring中国教育管理中心)

本指南将引导您完成创建使用 RESTful Web 服务的应用程序的过程。

你将建造什么

您将构建一个应用程序,该应用程序使用 SpringRestTemplate在 https://quoters.apps.pcfone.io/api/random检索随机 Spring Boot 报价。

你需要什么

  • 约15分钟
  • 最喜欢的文本编辑器或 IDE
  • JDK 1.8或更高版本
  • Gradle 4+或Maven 3.2+
  • 您还可以将代码直接导入 IDE:弹簧工具套件 (STS)IntelliJ IDEA

如何完成本指南

像大多数 Spring入门指南一样,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都会得到工作代码。

从头开始,请继续从 Spring Initializr 开始。

跳过基础知识,请执行以下操作:

  • 下载并解压缩本指南的源存储库,或使用Git克隆它:git clone https://github.com/spring-guides/gs-consuming-rest.git
  • 光盘进入 gs-consuming-rest/initial
  • 跳转到获取 REST 资源。

完成后,您可以对照中的代码检查结果 gs-consuming-rest/complete。

从 Spring Initializr 开始

您可以使用这个预先初始化的项目并单击 Generate 下载 ZIP 文件。此项目配置为适合本教程中的示例。

手动初始化项目:

  1. 导航到https://start.spring.io。该服务提取应用程序所需的所有依赖项,并为您完成大部分设置。
  2. 选择 Gradle 或 Maven 以及您要使用的语言。本指南假定您选择了 Java
  3. 单击Dependencies并选择Spring Web
  4. 单击生成
  5. 下载生成的 ZIP 文件,该文件是根据您的选择配置的 Web 应用程序的存档。

如果您的 IDE 具有 Spring Initializr 集成,您可以从您的 IDE 完成此过程。

你也可以从 Github 上 fork 项目并在你的 IDE 或其他编辑器中打开它。

获取 REST 资源

完成项目设置后,您可以创建一个使用 RESTful 服务的简单应用程序。

一个 RESTful 服务已经在 https://quoters.apps.pcfone.io/api/random建立起来。它随机获取有关 Spring Boot 的引用并将它们作为 JSON 文档返回。

如果您通过 Web 浏览器或 curl 请求该 URL,您会收到如下所示的 JSON 文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
   type: "success",
   value: {
      id: 10,
      quote: "Really loving Spring Boot, makes stand alone Spring apps easy."
   }
}

这很容易,但在通过浏览器或 curl 获取时并不是非常有用。

以编程方式使用 REST Web 服务的更有用的方法。为了帮助您完成这项任务,Spring 提供了一个方便的模板类,称为RestTemplate. RestTemplate使与大多数 RESTful 服务的交互成为单行咒语。它甚至可以将该数据绑定到自定义域类型。

首先,您需要创建一个域类来包含您需要的数据。以下清单显示了Quote可以用作域类的类:

src/main/java/com/example/consumingrest/Quote.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Quote {

  private String type;
  private Value value;

  public Quote() {
  }

  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }

  public Value getValue() {
    return value;
  }

  public void setValue(Value value) {
    this.value = value;
  }

  @Override
  public String toString() {
    return "Quote{" +
        "type='" + type + '\'' +
        ", value=" + value +
        '}';
  }
}

这个简单的 Java 类有一些属性和匹配的 getter 方法。它带有@JsonIgnoreProperties来自 Jackson JSON 处理库的注释,表示任何未绑定在此类型中的属性都应被忽略。

要将您的数据直接绑定到您的自定义类型,您需要将变量名称指定为与从 API 返回的 JSON 文档中的键完全相同。如果您的 JSON 文档中的变量名称和键不匹配,您可以使用@JsonProperty注释来指定 JSON 文档的确切键。(此示例将每个变量名称与 JSON 键匹配,因此此处不需要该注释。)

您还需要一个额外的类来嵌入内部引用本身。该类Value满足了这一需求,并显示在以下清单 (at src/main/java/com/example/consumingrest/Value.java) 中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Value {

  private Long id;
  private String quote;

  public Value() {
  }

  public Long getId() {
    return this.id;
  }

  public String getQuote() {
    return this.quote;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public void setQuote(String quote) {
    this.quote = quote;
  }

  @Override
  public String toString() {
    return "Value{" +
        "id=" + id +
        ", quote='" + quote + '\'' +
        '}';
  }
}

这使用相同的注释,但映射到其他数据字段。

完成申请

Initalizr 创建一个带有main()方法的类。以下清单显示了 Initializr 创建的类(at src/main/java/com/example/consumingrest/ConsumingRestApplication.java):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.consumingrest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConsumingRestApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConsumingRestApplication.class, args);
	}

}

现在您需要向ConsumingRestApplication该类添加一些其他内容,以使其显示来自我们 RESTful 源的引用。您需要添加:

  • 一个记录器,用于将输出发送到日志(在此示例中为控制台)。
  • A RestTemplate,它使用 Jackson JSON 处理库来处理传入的数据。
  • A在启动CommandLineRunner时运行RestTemplate(并因此获取我们的报价)。

以下清单显示了完成的ConsumingRestApplication类 (at src/main/java/com/example/consumingrest/ConsumingRestApplication.java):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.consumingrest;

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.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class ConsumingRestApplication {

	private static final Logger log = LoggerFactory.getLogger(ConsumingRestApplication.class);

	public static void main(String[] args) {
		SpringApplication.run(ConsumingRestApplication.class, args);
	}

	@Bean
	public RestTemplate restTemplate(RestTemplateBuilder builder) {
		return builder.build();
	}

	@Bean
	public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
		return args -> {
			Quote quote = restTemplate.getForObject(
					"https://quoters.apps.pcfone.io/api/random", Quote.class);
			log.info(quote.toString());
		};
	}
}

运行应用程序

您可以使用 Gradle 或 Maven 从命令行运行应用程序。您还可以构建一个包含所有必要依赖项、类和资源的单个可执行 JAR 文件并运行它。构建可执行 jar 可以在整个开发生命周期、跨不同环境等中轻松地作为应用程序交付、版本化和部署服务。

如果您使用 Gradle,则可以使用./gradlew bootRun. 或者,您可以使用构建 JAR 文件./gradlew build,然后运行 ​JAR 文件,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar build/libs/gs-sumption-rest-0.1.0.jar

如果您使用 Maven,则可以使用./mvnw spring-boot:run. 或者,您可以使用构建 JAR 文件,./mvnw clean package然后运行该 JAR 文件,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar 目标/gs-消费-rest-0.1.0.jar

此处描述的步骤创建了一个可运行的 JAR。您还可以构建经典的 WAR 文件。

您应该看到类似于以下的输出,但带有随机引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2019-08-22 14:06:46.506 INFO 42940 --- [main] cecConsumingRestApplication : Quote{type='success', value=Value{id

如果您看到显示为 的错误,Could not extract response: no suitable HttpMessageConverter found for response type [class com.example.consumingrest.Quote]则可能是您处于无法连接到后端服务的环境中(如果您可以访问它,它将发送 JSON)。也许您是公司代理的幕后黑手。尝试将http.proxyHost和http.proxyPort系统属性设置为适合您的环境的值。


恭喜!您刚刚使用 Spring Boot 开发了一个简单的 REST 客户端。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring认证指南|了解如何创建异步服务方法。
本指南将指导您创建对 GitHub 的异步查询。重点是异步部分,这是扩展服务时经常使用的功能。
IT胶囊
2022/04/02
6490
Spring认证指南|了解如何创建异步服务方法。
【SpingBoot guides系列翻译】调用RESTfulWebService
这节将演示如何在SpringBoot里面调用RESTful的WebService。
_淡定_
2019/04/29
9100
Spring认证指南:使用 Spring 创建“Hello, World”RESTful Web 服务
原标题:Spring认证中国教育管理中心-使用 Spring 创建“Hello, World”RESTful Web 服务(Spring中国教育管理中心)
IT胶囊
2022/01/25
9010
Spring认证指南:使用 Spring 创建“Hello, World”RESTful Web 服务
2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务
REST 已迅速成为在 Web 上构建 Web 服务的事实标准,因为它们易于构建且易于使用。
IT胶囊
2022/07/28
6230
2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务
SpringBoot构建RESTful程序入门
这里演示如何用Maven来构建你的spring应用,如果你不熟悉怎么使用Maven,可以看这里。
_淡定_
2019/04/12
6630
Spring认证指南-了解如何使用 Spring Boot Actuator 创建 RESTful Web 服务。
Spring Boot Actuator是 Spring Boot 的一个子项目。它为您的应用程序添加了几项生产级服务,您无需付出任何努力。在本指南中,您将构建一个应用程序,然后了解如何添加这些服务。
IT胶囊
2022/03/01
2.1K0
Spring认证指南-了解如何使用 Spring Boot Actuator 创建 RESTful Web 服务。
Spring认证指南:了解如何使用 Spring 创建超媒体驱动的 RESTful Web 服务
本指南将引导您完成使用 Spring 创建“Hello, World”超媒体驱动的 REST Web 服务的过程。
IT胶囊
2022/03/07
4K0
Spring认证指南:了解如何使用 Spring 创建超媒体驱动的 RESTful Web 服务
Spring Boot (2) 构建一个RESTful Web服务
简单理解 RESTful 就是: “ 用明确的方法 操作 语义清晰的资源,来呈现不同的资源表现形式”。
张云飞Vir
2020/04/23
6960
使用 Spring Boot Actuator 构建 RESTful Web 应用
Spring Boot Actuator 是 Spring Boot 的一个子项目。通过它,可以很轻易地为应用提供多种生产级服务。本教程中,你将通过构建一个应用来学习如何添加这些服务。
二哥聊运营工具
2021/12/17
7450
Spring认证指南-了解如何使用 JMS 代理发布和订阅消息
您将构建一个应用程序,该应用程序使用 SpringJmsTemplate发布单个消息并@JmsListener使用托管 bean 的注释方法订阅它。
IT胶囊
2022/03/01
1K0
Spring认证指南-了解如何使用 JMS 代理发布和订阅消息
使用 JPA 访问数据
本指南将引导您完成构建应用程序的过程,该应用程序使用#spring# #spring认证# Spring Data JPA 在关系数据库中存储和检索数据。
IT胶囊
2022/09/06
1.4K0
使用 JPA 访问数据
Spring认证指南:了解如何以最少的配置构建应用程序
本指南提供了Spring Boot如何帮助您加速应用程序开发的示例。随着您阅读更多 Spring 入门指南,您将看到更多 Spring Boot 用例。本指南旨在让您快速了解 Spring Boot。如果您想创建自己的基于 Spring Boot 的项目,请访问Spring Initializr,填写您的项目详细信息,选择您的选项,然后将捆绑的项目下载为 zip 文件。
IT胶囊
2022/04/06
9530
Spring认证指南:了解如何以最少的配置构建应用程序
Spring 调度任务
@Scheduled将构建一个应用程序,通过使用 Spring 的注释每五秒打印一次当前时间。
郭顺发
2023/07/07
2360
Spring认证指南:了解如何使用 Spring 创建和提交 Web 表单
在本指南中,您将构建一个 Web 表单,可通过以下 URL 访问该表单: http://localhost:8080/greeting
IT胶囊
2022/04/06
1.8K0
Spring认证指南:了解如何使用 Spring 创建和提交 Web 表单
Spring认证指南:了解如何使用 Spring 安排任务
原标题:Spring认证中国教育管理中心-了解如何使用 Spring 安排任务(Spring中国教育管理中心)
IT胶囊
2022/01/25
1.1K0
Spring认证指南:了解如何使用 Spring 安排任务
Spring认证指南:了解如何使用 LDAP 保护应用程序
原标题:Spring认证中国教育管理中心-了解如何使用 LDAP 保护应用程序(Spring中国教育管理中心)
IT胶囊
2022/02/07
9430
Spring认证指南:了解如何使用 LDAP 保护应用程序
Spring国际认证指南|为 RESTful Web 服务启用跨源请求
本指南将引导您完成使用 Spring 创建“Hello, World”RESTful Web 服务的过程,该服务在响应中包含跨域资源共享 (CORS) 的标头。您可以在此博客文章中找到有关 Spring CORS 支持的更多信息。
IT胶囊
2022/04/18
1.7K0
Spring国际认证指南|为 RESTful Web 服务启用跨源请求
Spring认证指南:了解如何构建一个多文件上传的 Spring 应用程序
原标题:Spring认证中国教育管理中心-了解如何构建一个接受多部分文件上传的 Spring 应用程序(Spring中国教育管理中心)
IT胶囊
2022/02/07
5350
Spring认证指南:了解如何构建一个多文件上传的 Spring 应用程序
使用 Spring 构建 RESTful Web 服务
本指南将引导您完成使用 Spring 创建“Hello, World”RESTful Web 服务的过程。
IT胶囊
2021/09/14
1.3K0
使用 Spring 构建 RESTful Web 服务
Spring认证指南:了解如何使用 Redis 作为消息代理
原标题:Spring认证中国教育管理中心-了解如何使用 Redis 作为消息代理(Spring中国教育管理中心)
IT胶囊
2022/02/07
9540
Spring认证指南:了解如何使用 Redis 作为消息代理
推荐阅读
相关推荐
Spring认证指南|了解如何创建异步服务方法。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验