📜  如何通过 REST API 和 Spring MVC 提取电视节目详细信息?(1)

📅  最后修改于: 2023-12-03 15:09:17.090000             🧑  作者: Mango

如何通过 REST API 和 Spring MVC 提取电视节目详细信息?

在此篇文章中,我们将讨论如何使用 REST API 和 Spring MVC 框架来提取电视节目的详细信息。REST API 是一种非常流行的架构风格,它可以让客户端应用程序通过互联网与服务器进行通信。Spring MVC 是一种用于开发 Web 应用程序的框架,它可以提供 REST API 的支持。

准备工作

在开始之前,您需要确保已经安装了以下软件:

  • JDK 1.8 或更高版本
  • Maven

您还需要注册一个免费的 TVMaze API 帐户,以获得访问电视节目信息的权限。

创建新的 Maven 项目

首先,我们需要创建一个新的 Maven 项目。打开终端或命令提示符,导航到您要创建项目的目录,并输入以下命令:

mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=tvshows \
  -DarchetypeArtifactId=maven-archetype-webapp \
  -DinteractiveMode=false

这将创建一个名为 tvshows 的新 Maven 项目,并为您安装 Web 应用程序的基本结构。

添加依赖库

接下来,我们需要将一些依赖库添加到 pom.xml 文件中。在您的 Maven 项目中,打开 pom.xml 文件,并添加以下依赖项:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.3.2</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>5.3.2</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.12.0</version>
</dependency>

这些依赖库将帮助您构建具有 REST API 支持的 Web 应用程序。

编写 Java 代码

要从 TVMaze API 中提取电视节目的详细信息,我们将需要向 TVMaze 发送 HTTP 请求。我们可以使用 Java 中提供的 URLConnection 类来执行此操作。以下是一个基本的 Java 类,它将负责从 TVMaze API 中提取数据:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class TvShowFetcher {

    public String fetchTvShowDetails(String query) throws IOException {
        String url = "http://api.tvmaze.com/search/shows?q=" + query;

        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod("GET");

        int responseCode = connection.getResponseCode();

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder response = new StringBuilder();

            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line);
                response.append('\r');
            }

            reader.close();

            return response.toString();
        } else {
            throw new IOException("Failed to fetch TV show details; error code: " + responseCode);
        }
    }
}

该类中的 fetchTvShowDetails 方法将向 TVMaze API 发送一个 HTTP GET 请求,并返回结果。该类使用 URLConnection 类打开一个 HttpURLConnection 对象,这是一个用于发送 HTTP 请求的类。

现在,我们需要将此类集成到我们的 Spring MVC 应用程序中。以下是一个基本的控制器类,它将处理从客户端发送的 HTTP 请求:

import java.io.IOException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TvShowController {

    @Autowired
    private TvShowFetcher tvShowFetcher;

    @RequestMapping(value = "/tvshows/{query}", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody String getTvShowDetails(@PathVariable("query") String query) {
        try {
            return tvShowFetcher.fetchTvShowDetails(query);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
}

这个控制器类用 @Controller 注释标记,它告诉 Spring MVC 框架这是一个控制器类。@RequestMapping 注释指定了我们要处理的 HTTP 请求的路径和方法类型。在这里,我们正在处理路径为 /tvshows/{query} 的 HTTP GET 请求。@PathVariable 注释告诉 Spring MVC 框架我们要提取的路径参数的名称。在这里,我们正在提取名为 query 的路径参数。

我们还注入了一个 TvShowFetcher 类型的 bean。这是通过使用 @Autowired 注释告诉 Spring MVC 框架自动创建和注入的。当处理 HTTP GET 请求时,我们将调用 fetchTvShowDetails 方法来从 TVMaze API 中提取数据。@ResponseBody 注释告诉 Spring MVC 框架,我们将使用 JSON 格式返回结果。

测试您的代码

现在我们已经编写了所有必要的 Java 代码,让我们来测试一下。运行以下命令启动 Spring MVC 应用程序:

mvn tomcat7:run

这将启动嵌入式 Tomcat 服务器,并将您的应用程序部署到该服务器。要测试您的应用程序,请打开您的 Web 浏览器,并访问以下 URL:

http://localhost:8080/tvshows/the-walking-dead

在这里,the-walking-dead 是您要提取的电视节目的名称。您应该看到一个 JSON 格式的响应,其中包含有关所提取电视节目的详细信息。

结论

在本文中,我们学习了如何使用 REST API 和 Spring MVC 框架来提取电视节目的详细信息。我们编写了一个 Java 类来向 TVMaze API 发送 HTTP 请求,并编写了一个 Spring MVC 控制器来处理这些请求。我们还测试了我们的应用程序,并确保它可以正确地提取数据。