使用 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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,