すべてのプロダクト
Search
ドキュメントセンター

Function Compute:HTTPハンドラー

最終更新日:Sep 02, 2024

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ライブラリには、さまざまなハンドラータイプとインターフェイスを使用するサンプルプログラムが含まれています。 各サンプルプログラムには、簡単なコンパイルと展開のためのメソッドが含まれます。 例: