Java에서 REST 클라이언트 만들기

Jay Shaw 2024년2월15일
  1. Spring Boot를 사용하여 Java Rest 클라이언트를 생성하는 단계
  2. OkHttp를 사용하여 Java REST 클라이언트 생성
  3. 결론
Java에서 REST 클라이언트 만들기

REST는 많은 처리 없이도 서로 쉽게 상호 작용할 수 있도록 웹 프로그램을 위해 만들어진 일련의 규칙 및 규정입니다.

REST 클라이언트로 알려진 이러한 웹 프로그램이 사용하는 REST 서비스에 액세스하려면 클라이언트 측 애플리케이션이 필요합니다.

이 기사에서는 REST 클라이언트를 작성하는 다양한 도구를 살펴봅니다. 첫 번째 예는 Spring Boot 및 OkHttp를 사용하여 간단한 REST 클라이언트를 생성하는 단계를 보여줍니다.

Spring Boot를 사용하여 Java Rest 클라이언트를 생성하는 단계

REST 클라이언트를 생성하려면 IDE가 작동할 프레임워크가 필요합니다. 프레임워크는 모든 필수 라이브러리 패키지 및 런타임 관련 구성 요소를 포함하는 환경입니다.

Spring Boot는 마이크로 서비스를 만드는 데 사용되는 오픈 소스 Java 프레임워크입니다. Java 및 Spring Boot로 REST 클라이언트를 생성하려면 다음 리소스가 필요합니다.

  • Eclipse IDE 또는 Spring Tool Suite
  • JDK 1.8 이상
  • 메이븐 3.2+

위의 모든 도구를 사용하여 다음 하위 섹션에서 REST 클라이언트를 단계별로 생성합니다.

빈 프로젝트 만들기

첫 번째 단계는 빈 프로젝트를 만드는 것입니다. 이는 두 가지 방법으로 수행할 수 있습니다.

  1. 빈 프로젝트를 만들고 모든 종속성을 수동으로 추가합니다.

    • Spring Tool Suite를 열고 파일>새로 만들기>기타>웹>동적 웹 프로젝트로 이동한 후 다음을 클릭합니다.
    • 프로젝트 이름을 지정하고 런타임 서버를 선택하고 Dynamic Web용 모듈 버전을 선택한 후 다음을 클릭합니다.
    • 마지막 섹션은 라이브러리 트리를 보여줍니다. 여기에서 전체 파일 경로 트리를 변경할 수 있습니다.
  2. Spring Initializr를 사용하여 사전 초기화된 프로젝트를 가져옵니다.

Spring Initializr는 프로그래머의 종속성 요구에 따라 구성된 사전 초기화된 프로젝트를 다운로드하며 https://start.spring.io/에서 생성할 수 있습니다.

자바 레스트 클라이언트

이 웹 서비스는 선택한 모든 종속성과 함께 maven 또는 Gradle 프로젝트를 생성합니다. 생성을 클릭하면 브라우저는 웹 프로젝트에 필요한 모든 파일과 라이브러리가 포함된 .zip 파일을 다운로드합니다.

여기에 사용된 예제 프로젝트는 REST API 서비스를 사용하여 URL에서 따옴표를 추출하고 클라이언트가 GET 요청을 보낼 때 결과를 반환합니다.

프로젝트에는 org.clientforquotes라는 이름이 지정되고 여기에는 하나의 종속성만 필요하므로 spring web만 선택됩니다.

REST 서비스 생성

REST 서비스는 GETPOST와 같은 명령을 받고 응답을 반환합니다.

REST 서비스를 실행하는 애플리케이션을 만들려면 Java 클래스를 만들고 이름을 지정합니다. 이 예에서 클래스에는 mainapplication.java라는 이름이 지정되며 src/main/java 폴더 안에 만들어집니다.

이 클래스에는 main 메서드가 포함되어 있습니다. 이니셜라이저를 통해 생성될 때 이 클래스는 이미 존재하는 것을 찾을 수 있습니다.

이 클래스에는 세 가지 주요 구성 요소가 있습니다.

  1. 출력을 보기 위해 logger 메서드가 추가됩니다.
  2. 도메인에서 받은 데이터는 JSON 라이브러리를 통해 처리됩니다. RestTemplate 메소드를 사용하여 수행됩니다.
  3. 응용 프로그램은 시작 시 견적을 추출합니다. 이 프로세스는 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.javabasevalues.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에 새 종속성 추가

모든 웹 프로젝트에는 프로젝트에 필요한 종속성을 저장하는 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="https://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 클라이언트를 만들 수 있습니다.