使用 Java 创建 REST 客户端
REST 是一组为 Web 程序创建的规则和规定,可以轻松地相互交互,而无需进行大量处理。
需要客户端应用程序来访问这些 Web 程序使用的 REST 服务,称为 REST 客户端。
本文将介绍创建 REST 客户端的不同工具。 第一个示例演示了使用 Spring Boot 和 OkHttp 创建简单 REST 客户端的步骤。
使用 Spring Boot 创建 Java Rest 客户端的步骤
要创建 REST 客户端,IDE 需要一个框架才能工作。 框架是一个包含所有基本库包和运行时相关组件的环境。
Spring Boot 是一个用于创建微服务的开源 Java 框架。 我们需要以下资源来使用 Java 和 Spring Boot 创建 REST 客户端。
- Eclipse IDE 或 Spring 工具套件
- JDK 1.8 或更高版本
- Maven 3.2+
我们将在以下小节中使用上述所有工具逐步创建一个 REST 客户端。
创建一个空项目
第一步是创建一个空项目。 这可以通过两种方式完成。
- 创建一个空项目并手动添加所有依赖项。
- 打开 Spring Tool Suite,转到“文件”>“新建”>“其他”>“Web”>“动态 Web 项目”,然后单击“下一步”。
- 指定项目名称,选择运行时服务器,选择 Dynamic Web 的模块版本,然后单击“下一步”。
- 最后一部分显示了库树。 可以在此处对整个文件路径树进行任何更改。
- 使用 Spring Initializr 获取预初始化的项目。
Spring Initializr 下载一个根据程序员需要的依赖项进行配置的预初始化项目,并且可以从 https://start.spring.io/ 创建它。
此 Web 服务创建一个包含所有选定依赖项的 Maven 或 Gradle 项目。 单击“生成”后,浏览器将下载一个 .zip 文件,其中包含 Web 项目所需的所有必要文件和库。
此处使用的示例项目使用 REST API 服务从 URL 中提取引号,并在客户端发送 GET 请求时返回结果。
项目给定了一个名字——org.clientforquotes,这里只需要一个依赖,所以只选择了spring web。
创建 REST 服务
REST 服务接受 GET 和 POST 等命令并返回响应。
要创建运行 REST 服务的应用程序,请创建一个 Java 类并为其命名。 在此示例中,该类被赋予一个名称 - mainapplication.java,该名称在 src/main/java 文件夹中创建。
该类包含 main 方法。 当通过初始化器创建时,可以发现该类已经存在。
该类由三个主要组件组成:
- 为了查看输出,添加了记录器方法。
- 从域接收的数据通过 JSON 库进行处理。 这是使用 RestTemplate 方法完成的。
- 应用程序在启动时提取报价。 当使用 CommandLineRunner 执行 Rest Template 时,会发生此过程。
以下是创建 REST 服务的源代码。 该文件名为 MainApplication.java。
package com.example.clientforquotes;
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 MainApplication {
private static final Logger log = LoggerFactory.getLogger(MainApplication.class);
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
Quote qt = restTemplate.getForObject
("https://quoters.apps.pcfone.io/api/random", Quote.class);
log.info(qt.toString());
};
}
}
创建一个存储域中数据的类
创建另外两个 .java 文件 - pullquote.java 和 basevalues.java 以添加 getter-setter 方法、构造函数和 To_String 函数。
pullquote 类存储从 URL 域检索的引用值,并在调用该类时显示它。 以下是pullquote.java文件的源代码。
package com.example.clientforquotes;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Pullquote {
private String object_type;
private Basevalue qt_value;
public Pullquote() {
}
public String getType() {
return object_type;
}
public void setType(String type) {
this.object_type = type;
}
public Basevalue getValue() {
return qt_value;
}
public void setValue(Basevalue value) {
this.qt_value = value;
}
@Override
public String toString() {
return "The quote for you = {" +
"type='" + object_type +'\'' +
", value=" + qt_value +
'}';
}
}
我们还将在文件basevalue.java中创建一个类Basevalue来存储内部引用。
package com.example.clientforquotes;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Basevalue {
private Long sr_no;
private String qt;
public Basevalue() {
}
public Long getId() {
return this.sr_no;
}
public String getQuote() {
return this.qt;
}
public void setId(Long id) {
this.sr_no = id;
}
public void setQuote(String quote) {
this.qt = quote;
}
@Override
public String toString() {
return "Value{" +
"id=" + sr_no +
", quote='" + qt + '\'' +
'}';
}
}
将任何新的依赖项添加到 pom.xml
每个 Web 项目都有一个 pom.xml 文件,用于存储项目所需的依赖项。 如果在项目中导入新库,则必须将其依赖项添加到其 pom.xml 中。
以下是我们项目的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>client-for-quotes</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>client-for-quotes</name>
<description>Project for fetching quotes</description>
<properties>
<java.version>1.8</java.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>
运行应用程序
运行应用程序的方法有很多种。
- 直接在 Spring Boot 应用程序上运行它。
- 创建项目的可执行 .jar 文件。
- 通过命令行运行它。
您可以使用上述任何方法运行我们创建的 REST 客户端。 现在让我们讨论使用其他框架创建 Java REST 客户端。
使用 OkHttp 创建 Java REST 客户端
它是一个轻量级且高效的 Java 应用程序客户端。 使用它的网络程序据说可以加载得更快。
当发出请求时,程序会向服务发送 JSON 调用。 URL 写在 .url 参数内,而请求类型写在 .post 参数内。
.build()
函数创建一个 OkHttp 请求。 以下是使用OkHttp框架创建Java REST客户端的源代码。
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient obj = new OkHttpClient();
String post(String domain, String call) throws IOException {
RequestBody req_body = RequestBody.create(JSON, call);
Request quest = new Requests.Builder()
.url(domain)
.post(req_body)
.build();
Response resp = obj.newCall(quest).execute();
return resp.req_body().string();
}
总结
我们已经以详细而简单的方式解释了如何创建 Java REST 客户端。 读完本文后,读者可以使用 Spring Boot 和 OkHttp 等一些流行的框架来制作 Java REST 客户端。
相关文章
使用 Java 创建 HTTPS 服务器
发布时间:2023/08/10 浏览次数:126 分类:Java
-
本文介绍如何使用 Java 创建简单的 HTTPS 服务器。使用 Java 创建 HTTPS 服务器 在用JAVA创建HTTPS服务器之前,我们必须确保已经生成了服务器将使用的Keystore和Truststore。
Java 中的 AES 256
发布时间:2023/08/10 浏览次数:83 分类:Java
-
AES 256 是一种加密和解密算法。 本教程演示如何在 Java 中实现 AES 256 来加密和解密数据。Java 中的 AES 256 AES 是一种对称加密算法,易于在软件、硬件和受限环境中实现。
在JDBC中建立连接池
发布时间:2023/08/10 浏览次数:55 分类:Java
-
JDBC 是 Sun Microsystems 的一项规范,它为 Java 应用程序提供 API 以执行不同的操作,例如对各种数据库进行读取和写入。 JDBC提供了一种数据库连接标准的语言,您可以编写数据库访问所需的程序。
在 Java 中使用 SwingUtilities.invokeLater()
发布时间:2023/08/10 浏览次数:101 分类:Java
-
SwingUtilities.invokeLater() 方法在 Abstract Window Toolkit (AWT) 事件调度线程上执行可运行对象。 我们这样做是因为 Swing 数据结构不是线程安全的。线程安全意味着它可以从多个线程并行使用而不会导致
Java 尾部调用优化
发布时间:2023/08/10 浏览次数:170 分类:Java
-
本文讨论尾部调用优化(也称为 TCO)及其在 Java 中不存在的原因。 我们还将看到一些其他可以用来在 Java 中模拟 TCO 的方法。什么是尾调用优化
修复警告:使用或覆盖 Java 中已弃用的 API
发布时间:2023/08/10 浏览次数:75 分类:Java
-
本文我们将了解为什么警告说使用或覆盖已弃用的 API,并演示如何修复此问题以完成任务。修复警告说使用或覆盖 Java 中已弃用的 API
使用 Java 删除文件夹
发布时间:2023/08/09 浏览次数:76 分类:Java
-
在本文中,我们将学习如何使用 Java 编程语言删除文件夹/目录。 有多种方法可以做到这一点。 让我们一一看看。使用Java的File类的delete()删除空文件夹