Event handler adalah fungsi Go yang dipanggil oleh Function Compute saat fungsi Anda dipicu. Halaman ini menjelaskan cara menulis event handler yang valid, signature yang didukung, serta cara Function Compute memproses input dan output.
Menulis event handler
Event handler adalah fungsi Go yang memproses suatu event dan mengembalikan hasil. Untuk menjalankannya di Function Compute, panggil fc.Start dalam fungsi main.
Contoh berikut menerima event JSON dengan bidang key dan mengembalikan salam:
package main
import (
"context"
"fmt"
"github.com/aliyun/fc-runtime-go-sdk/fc"
)
type StructEvent struct {
Key string `json:"key"`
}
func HandleRequest(ctx context.Context, event StructEvent) (string, error) {
return fmt.Sprintf("hello, %s!", event.Key), nil
}
func main() {
fc.Start(HandleRequest)
}Contoh event input:
{
"key": "value"
}Komponen handler
| Komponen | Deskripsi |
|---|---|
package main | Setiap aplikasi Go harus mendefinisikan package main. |
github.com/aliyun/fc-runtime-go-sdk/fc | Pustaka SDK inti Function Compute untuk Go. |
context | Package konteks standar Go, digunakan untuk mengakses informasi konteks waktu proses selama pemanggilan. |
ctx context.Context | Menyediakan informasi konteks waktu proses saat fungsi dipanggil. Lihat Context. |
event StructEvent | Data masukan yang diteruskan saat fungsi dipanggil. Berbagai tipe data didukung. |
(string, error) | Nilai kembali. string membawa hasil; error membawa kesalahan apa pun. Jika nil dikembalikan untuk error, berarti tidak terjadi kesalahan. Lihat Error handling. |
fc.Start(HandleRequest) | Mendaftarkan handler dan menjalankan fungsi. Setiap event handler harus memanggil fc.Start di dalam main. |
Fungsi start berbeda tergantung jenis handlernya. Gunakan fc.Start untuk event handler dan fc.StartHttp untuk HTTP handler.
Signature handler yang valid
Signature handler menentukan input dan output yang diterima oleh fungsi handler. Function Compute menerapkan aturan berikut:
Handler harus berupa fungsi.
Handler menerima paling banyak dua parameter input. Jika dua parameter disediakan, parameter pertama harus berupa
context.Context.Handler mengembalikan paling banyak dua nilai. Jika hanya satu nilai yang dikembalikan, nilainya harus bertipe
error. Jika dua nilai dikembalikan, nilai kedua harus bertipeerror.
Berdasarkan aturan tersebut, signature berikut semuanya valid:
func ()
func () error
func (InputType) error
func () (OutputType, error)
func (InputType) (OutputType, error)
func (context.Context) error
func (context.Context, InputType) error
func (context.Context) (OutputType, error)
func (context.Context, InputType) (OutputType, error)InputType dan OutputType harus kompatibel dengan pustaka standar encoding/json. Function Compute melakukan deserialisasi InputType menggunakan json.Unmarshal dan melakukan serialisasi OutputType menggunakan json.Marshal. Lihat JSON Unmarshal untuk detailnya.
Kode contoh untuk tipe event umum
| File | Tipe event |
|---|---|
| event-struct.go | Struct |
| event-string.go | String |
| event-map.go | map[string]interface{} |
Untuk contoh lainnya, lihat fc-runtime-go-sdk/examples.
Langkah berikutnya
Context — akses metadata waktu proses, nama fungsi, dan ID permintaan di dalam handler Anda
Error handling — tangani dan kembalikan kesalahan dari fungsi Anda