2.91. Platform HTTP


このエクステンションにより、HTTP リクエストを使用するために HTTP エンドポイントを作成できます。

これは、quarkus-vertx-http エクステンションによって提供される Eclipse Vert.x HTTP サーバー上にビルドされます。

2.91.1. 含まれるもの

使用方法と設定の詳細は、上記リンクを参照してください。

2.91.2. Maven コーディネート

code.quarkus.redhat.com でこのエクステンションを使用して新しいプロジェクトの作成

または、既存のプロジェクトに座標を追加します。

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-platform-http</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.91.3. 使用方法

2.91.3.1. 基本的な使用方法

/hello エンドポイントですべての HTTP メソッドを提供します。

from("platform-http:/hello").setBody(simple("Hello ${header.name}"));
Copy to Clipboard Toggle word wrap

/hello エンドポイントで GET リクエストのみを提供します。

from("platform-http:/hello?httpMethodRestrict=GET").setBody(simple("Hello ${header.name}"));
Copy to Clipboard Toggle word wrap

2.91.3.2. Camel REST DSL 経由の platform-http の使用

platform-http コンポーネントで Camel REST DSL を使用できるようにするには、pom.xmlcamel-quarkus-rest を追加します。

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-rest</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

その後、Camel REST DSL を使用できます。

rest()
    .get("/my-get-endpoint")
        .to("direct:handleGetRequest");

    .post("/my-post-endpoint")
        .to("direct:handlePostRequest");
Copy to Clipboard Toggle word wrap

2.91.3.3. multipart/form-data ファイルのアップロードの処理

ホワイトリストに登録して、アップロードを特定のファイル拡張子に制限することができます。

from("platform-http:/upload/multipart?fileNameExtWhitelist=adoc,txt&httpMethodRestrict=POST")
    .to("log:multipart")
    .process(e -> {
        final AttachmentMessage am = e.getMessage(AttachmentMessage.class);
        if (am.hasAttachments()) {
            am.getAttachments().forEach((fileName, dataHandler) -> {
                try (InputStream in = dataHandler.getInputStream()) {
                    // do something with the input stream
                } catch (IOException ioe) {
                    throw new RuntimeException(ioe);
                }
            });
        }
    });
Copy to Clipboard Toggle word wrap

2.91.3.4. platform-http エンドポイントのセキュリティー保護

Quarkus は、platform-http エンドポイントのセキュリティー保護に使用できるさまざまなセキュリティーおよび認証メカニズムを提供します。詳細は、Quarkus Security のドキュメント を参照してください。

ルート内で、認証されたユーザーとその関連する SecurityIdentity および Principal を取得できます。

from("platform-http:/secure")
    .process(e -> {
        Message message = e.getMessage();
        QuarkusHttpUser user = message.getHeader(VertxPlatformHttpConstants.AUTHENTICATED_USER, QuarkusHttpUser.class);
        SecurityIdentity securityIdentity = user.getSecurityIdentity();
        Principal principal = securityIdentity.getPrincipal();
        // Do something useful with SecurityIdentity / Principal. E.g check user roles etc.
    });
Copy to Clipboard Toggle word wrap

Quarkus ドキュメントquarkus.http.body.* 設定オプション (特に次の項目) も確認してください。quarkus.http.body.handle-file-uploadsquarkus.http.body.uploads-directory および quarkus.http.body.delete-uploaded-files-on-end

2.91.3.5. リバースプロキシーの実装

プラットフォーム HTTP コンポーネントはリバースプロキシーとして機能できます。その場合、Exchange.HTTP_URIExchange.HTTP_HOST ヘッダーは、HTTP 要求のリクエスト行で受信した絶対 URL から入力されます。

エクスチェンジを元のサーバーに単純にリダイレクトする HTTP プロキシーの例を次に示します。

from("platform-http:proxy")
    .toD("http://"
        + "${headers." + Exchange.HTTP_HOST + "}");
Copy to Clipboard Toggle word wrap

2.91.3.6. エラー処理

ルートから例外が出力されたときにクライアントに返される応答をカスタマイズする必要がある場合は、doTrydoCatchonException などの Camel エラー処理構造を使用できます。

たとえば、特定の例外タイプが出力された場合に応答してグローバル例外ハンドラーを設定する場合などです。

onException(InvalidOrderTotalException.class)
    .handled(true)
    .setHeader(Exchange.HTTP_RESPONSE_CODE).constant(500)
    .setHeader(Exchange.CONTENT_TYPE).constant("text/plain")
    .setBody().constant("The order total was not greater than 100");

from("platform-http:/orders")
    .choice().when().xpath("//order/total > 100")
        .to("direct:processOrder")
    .otherwise()
        .throwException(new InvalidOrderTotalException());
Copy to Clipboard Toggle word wrap

CDI オブザーバーを使用して Vert.x Web ルーターの初期化をフックすることで、より詳細なエラー処理を実装できます。

void initRouter(@Observes Router router) {
    // Custom 404 handler
    router.errorHandler(404, new Handler<RoutingContext>() {
        @Override
        public void handle(RoutingContext event) {
            event.response()
                .setStatusCode(404)
                .putHeader("Content-Type", "text/plain")
                .end("Sorry - resource not found");
        }
    });
}
Copy to Clipboard Toggle word wrap

RestEASY などのエクステンションが存在する場合、独自のエラー処理ロジックが登録される可能性があるため、ルーターの設定を変更する場合は注意が必要です。

2.91.4. 追加の Camel Quarkus 設定

2.91.4.1. プラットフォーム HTTP サーバー設定

プラットフォーム HTTP サーバーの設定は Quarkus によって管理されます。設定オプションの完全なリストは、Quarkus HTTP 設定ガイド を参照してください。

Platform HTTP サーバーの SSL を設定するには、SSL ガイドを使用した安全な接続 に従ってください。SSLContextParameters を使用した SSL 用のサーバーの設定は現在サポートされていないことに注意してください。

2.91.4.2. 文字エンコーディング

アプリケーションがデフォルト以外のエンコーディングを使用してリクエストを送受信することが想定される場合は、ネイティブモードガイドの 文字エンコーディング のセクションを確認してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る