2.59. Platform HTTP
このエクステンションにより、HTTP リクエストを使用するために HTTP エンドポイントを作成できます。
これは、quarkus-vertx-http エクステンションによって提供される Eclipse Vert.x HTTP サーバー上にビルドされます。
2.59.1. 含まれるもの リンクのコピーリンクがクリップボードにコピーされました!
-
Platform HTTP コンポーネント、URI 構文:
platform-http:path
使用方法と設定の詳細については、上記リンクを参照してください。
2.59.2. Maven コーディネート リンクのコピーリンクがクリップボードにコピーされました!
code.quarkus.redhat.com でこのエクステンションを使用して新しいプロジェクトの作成
または、既存のプロジェクトに座標を追加します。
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-platform-http</artifactId>
</dependency>
2.59.3. 用途 リンクのコピーリンクがクリップボードにコピーされました!
2.59.3.1. 基本的な使用方法 リンクのコピーリンクがクリップボードにコピーされました!
/hello エンドポイントですべての HTTP メソッドを提供します。
from("platform-http:/hello").setBody(simple("Hello ${header.name}"));
/hello エンドポイントで GET リクエストのみを提供します。
from("platform-http:/hello?httpMethodRestrict=GET").setBody(simple("Hello ${header.name}"));
2.59.3.2. Camel REST DSL 経由の platform-http の使用 リンクのコピーリンクがクリップボードにコピーされました!
platform-http コンポーネントで Camel REST DSL を使用できるようにするには、pom.xml に camel-quarkus-rest を追加します。
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-rest</artifactId>
</dependency>
その後、Camel REST DSL を使用できます。
rest()
.get("/my-get-endpoint")
.to("direct:handleGetRequest");
.post("/my-post-endpoint")
.to("direct:handlePostRequest");
2.59.3.3. multipart/form-data ファイルのアップロードの処理 リンクのコピーリンクがクリップボードにコピーされました!
ホワイトリストに登録して、アップロードを特定のファイル拡張子に制限することができます。
from("platform-http:/upload/multipart?fileNameExtWhitelist=html,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);
}
});
}
});
2.59.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.
});
Quarkus ドキュメント で quarkus.http.body.* 設定オプション (特に次の項目) も確認してください。quarkus.http.body.handle-file-uploads、quarkus.http.body.uploads-directory および quarkus.http.body.delete-uploaded-files-on-end。
2.59.3.5. リバースプロキシーの実装 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォーム HTTP コンポーネントはリバースプロキシーとして機能できます。その場合、Exchange.HTTP_URI、Exchange.HTTP_HOST ヘッダーは、HTTP 要求のリクエスト行で受信した絶対 URL から入力されます。
エクスチェンジを元のサーバーに単純にリダイレクトする HTTP プロキシーの例を次に示します。
from("platform-http:proxy")
.toD("http://"
+ "${headers." + Exchange.HTTP_HOST + "}");
2.59.4. 追加の Camel Quarkus 設定 リンクのコピーリンクがクリップボードにコピーされました!
2.59.4.1. プラットフォーム HTTP サーバー設定 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォーム HTTP サーバーの設定は Quarkus によって管理されます。設定オプションの完全なリストについては、Quarkus HTTP 設定ガイド を参照してください。
Platform HTTP サーバーの SSL を設定するには 、SSL ガイドを使用した安全な接続 に従ってください。SSLContextParameters を使用した SSL 用のサーバーの設定は現在サポートされていないことに注意してください。
2.59.4.2. 文字エンコーディング リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションがデフォルト以外のエンコーディングを使用してリクエストを送受信することが想定される場合は、ネイティブモードガイドの 文字エンコーディングのセクション を確認してください。