Anda dapat menggunakan penanganan HTTP untuk memproses permintaan HTTP secara efisien. Saat memanggil suatu fungsi, Function Compute menjalankan penanganan yang ditentukan dalam kode fungsi untuk memproses permintaan HTTP. Topik ini menjelaskan struktur dan karakteristik penanganan HTTP untuk Java.
Tanda tangan untuk penanganan HTTP
Function Compute menyediakan penangan fungsi HTTP berbasis Servlet dalam format berikut:
public interface HttpRequestHandler {
/**
* Fungsi masuk untuk pemicu HTTP fc
* @param request Permintaan servlet
* @param response Tanggapan servlet
* @param context Konteks fc
* @throws IOException Jika terjadi kesalahan IO
* @throws ServletException Jika terjadi kesalahan servlet
*/
public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws IOException, ServletException;
} Untuk menggunakan penanganan HTTP, Anda harus mengonfigurasi pemicu HTTP untuk fungsi tersebut. Untuk menggunakan pemicu HTTP, pastikan library fc-java-core ditingkatkan ke versi 1.3.0 atau lebih baru. Contoh: Untuk informasi lebih lanjut tentang pemicu HTTP, lihat Ikhtisar.
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-core</artifactId>
<version>1.4.1</version>
</dependency>Kode contoh
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
Dalam Function Compute, antarmuka untuk pemicu HTTP didasarkan pada protokol Servlet standar. Permintaan dienkapsulasi menjadi objek HttpServletRequest. Anda dapat memperoleh parameter permintaan dan header dari objek ini. Selain itu, Function Compute menambahkan beberapa atribut ke dalam HttpServletRequest. Gunakan getAttribute untuk menanyakan atribut-atribut ini. Atribut yang tersedia meliputi:
FC_REQUEST_PATH: Mendapatkan jalur permintaan.
FC_REQUEST_URI: Mendapatkan pengenal sumber daya seragam (URI) dari permintaan.
FC_REQUEST_CLIENT_IP: Mendapatkan alamat IP klien yang mengirim permintaan.
- HttpServletResponse
Gunakan objek HttpServletResponse standar untuk mengembalikan header dan badan tanggapan.
- context
Parameter context berisi informasi waktu proses dari sebuah fungsi, seperti ID permintaan dan pasangan AccessKey sementara. Parameter ini bertipe
com.aliyun.fc.runtime.Context.
Program contoh
- java11-blank-http: Panggilan balik HTTP.