HTTPハンドラーを使用して、HTTPリクエストを効率的に処理できます。 関数を呼び出すと、function ComputeはHTTPリクエストを処理するために関数コードで指定したハンドラーを実行します。 このトピックでは、JavaのHTTPハンドラーの構造と特性について説明します。
HTTPハンドラーの署名
Function Computeは、ServletベースのHTTP関数ハンドラーを次の形式で提供します。
public interface HttpRequestHandler {
/**
* The entrance function of fc http trigger
* @param request The servlet request
* @param response The servlet response
* @param context The fc context
* @throws IOException If IO exception happened
* @throws ServletException If servlet exception happened
*/
public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws IOException, ServletException;
}
HTTPハンドラーを使用するには、関数のHTTPトリガーを設定する必要があります。 HTTPトリガーを使用するには、fc-java-core
ライブラリを1.3.0以降にアップグレードする必要があります。 例: HTTPトリガーの詳細については、「概要」をご参照ください。
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-core</artifactId>
<version>1.4.1</version>
</dependency>
サンプルコード
package com.aliyun.fc.example;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.HttpRequestHandler;
public class Hello implements HttpRequestHandler {
public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context)
throws IOException, ServletException {
String requestPath = (String) request.getAttribute("FC_REQUEST_PATH");
String requestURI = (String) request.getAttribute("FC_REQUEST_URI");
String requestClientIP = (String) request.getAttribute("FC_REQUEST_CLIENT_IP");
response.setStatus(200);
response.setHeader("header1", "value1");
response.setHeader("header2", "value2");
String body = String.format("Path: %s\n Uri: %s\n IP: %s\n", requestPath, requestURI, requestClientIP);
OutputStream out = response.getOutputStream();
out.write((body).getBytes());
}
}
HttpServletRequest
Function Computeでは、HTTPトリガーのインターフェイスは標準のServletプロトコルに基づいています。 リクエストはHttpServletRequestオブジェクトにカプセル化されます。 このオブジェクトからリクエストパラメーターとヘッダーを取得できます。 さらに、Function Computeは、一部の属性をHttpServletRequestに事前カプセル化します。 getAttributeを使用してこれらの属性を照会できます。 以下のアイテムが含まれています。
FC_REQUEST_PATH: リクエストのパスを取得します。
FC_REQUEST_URI: リクエストのURI (uniform resource identifier) を取得します。
FC_REQUEST_CLIENT_IP: リクエストを送信するクライアントのIPアドレスを取得します。
HttpServletResponse
標準のHttpServletResponseオブジェクトを使用して、レスポンスのヘッダーと本文を返すことができます。
コンテキスト
contextパラメーターには、リクエストIDや一時的なAccessKeyペアなど、関数の実行時情報が含まれます。 このパラメーターは、
com.aliyun.fc.ru ntime.Context
タイプです。
サンプルプログラム
Function Computeライブラリには、さまざまなハンドラータイプとインターフェイスを使用するサンプルプログラムが含まれています。 各サンプルプログラムには、簡単なコンパイルと展開のためのメソッドが含まれます。 例:
java11-blank-http: HTTPコールバック。