通过Dapr API访问Spring Boot REST API(简易版)

使用 Dapr API 访问 Spring Boot REST API(简化版)

spring-boot_with_dapr.png

Purpose

增强对分布式应用程序运行时Dapr的理解。

实现

我們將在 Ubuntu 的 Docker 環境中實施一個簡單的示例,該示例可以從 Dapr API 中訪問 Spring Boot 應用程式。

开发环境 fā

    Windows 11 Home 22H2 を使用しています。
由于要操作WSL的Ubuntu,所以也可以参考macOS的方法。
WSL (Microsoft Store app version)
> wsl –version
WSL version: 1.0.3.0
Kernel version: 5.15.79.1
WSLg version: 1.0.47Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04

Java JDK
$ java -version
openjdk version “11.0.18” 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

Maven
$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.18, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64

Docker
$ docker –version
Docker version 23.0.1, build a5ee5b1

Dapr
$ dapr –version
CLI version: 1.11.0
Runtime version: 1.11.2

※ 本文基本上将使用Ubuntu终端进行操作。

创建Web应用程序规范

NoエンドポイントHTTPメソッドMIME タイプ1/api/dataGETapplication/json
打开说明。我们将实现一个简单的Web服务,当向/api/data端点发送HTTP GET请求时,将返回JSON数据。

显示 “Hello World” 的步骤

创建Spring Boot应用程序

您可以从相关的文章中进行确认。

 

创建项目文件夹

创建一个项目文件夹。
※项目文件夹路径为 ~/tmp/hello-spring-dapr。

$ mkdir -p ~/tmp/hello-spring-dapr
$ cd ~/tmp/hello-spring-dapr

创建应用程序类

为了简化结构,对所有元素进行了描述。
$ mkdir -p src/main/java/com/example/springdapr
$ vim src/main/java/com/example/springdapr/Application.java

文件的内容 de

package com.example.springdapr;

import java.util.Map;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
@RequestMapping("/api")
public class Application {

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

    @GetMapping("/data")
    public Map<String, String> getData() {
        Map<String, String> map = Map.of("message", "Hello World!");
        return map;
    }
}

创建 pom.xml 文件

$ vim pom.xml

文件的内容 de

<?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.7.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>hello-spring-dapr</artifactId>
    <version>1.0</version>
    <name>hello-spring-dapr</name>

    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

只需使用Spring Boot应用来执行

构建Java应用程序。

$ mvn clean package

启动应用程序。
※ 停止应用程序时请按下 Ctrl + C 键。

$ mvn spring-boot:run

我会通过命令从另一个终端确认。

$ curl http://localhost:8080/api/data -w '\n'

出力可以被理解为工作或努力的程度或强度。

{"message":"Hello World!"}
通过以下步骤,在终端上显示 {“message”:”Hello World!”} ,并成功获取到JSON数据。
在这里,暂时停止Spring Boot应用程序。

启动Dapr运行时

您可以在上一篇文章中了解有关 Dapr 运行时的相关信息。

 

Dapr版本确认

$ dapr --version
CLI version: 1.11.0
Runtime version: 1.11.2

Dapr运行时启动

我正在這裡在 Spring Boot 應用的項目文件夾根目錄執行。
在这个例子中,Dapr运行时在Docker上运行。在这种情况下,需要启动Docker服务。
$ dapr run \
    --app-id hello-spring-dapr \
    --app-port 8080 \
    --dapr-http-port 3500 \
    -- java -jar target/app.jar
Noオプション値説明1–app-idhello-spring-daprDapr ランタイムでのアプリの識別名
※ この例ではSpring Boot 側に特に設定ファイルは必要ありません。2–app-port8080Spring Boot アプリがリッスンするポート番号3–dapr-http-port3500Dapr ランタイムがリッスンするポート番号4– java -jartarget/app.jarSpring Boot アプリの jar ファイルを同時に実行します。

通过Dapr API访问Spring Boot应用程序

我将从不同的终端发送请求。

我正在调用Spring Boot应用程序的api/data端点。
$ curl http://localhost:3500/v1.0/invoke/hello-spring-dapr/method/api/data -w '\n'

发挥能力

{"message":"Hello World!"}

可以从Dapr API 中获取到“Hello World!”。

通过Dapr运行时,我们可以启动Spring Boot应用并从Dapr API中获取JSON数据。

总结

    • Spring Boot アプリの REST API を Dapr API 経由で呼び出すことが出来ました。

 

    • この記事の例ではまだ Spring Boot 側のアプリに Dapr への依存関係はありません。

 

    今後さらに Spring Boot から Dapr クライアントオブジェクトを操作する方法を学ぶ必要があります。

你觉得怎么样?在WSL Ubuntu上,可以方便地搭建使用Dapr运行时的开发环境。请务必试一试。今后我们还会介绍更多关于Ubuntu开发环境的内容,请一定期待。

推荐内容

 

请参考以下资料

    Dapr SDK Java
广告
将在 10 秒后关闭
bannerAds