11.6.3. Go 関数の呼び出しについて

Knative (kn) CLI を使用して関数プロジェクトを作成する場合に、CloudEvents に応答するプロジェクト、または単純な HTTP 要求に応答するプロジェクトを生成できます。Go 関数は、HTTP 要求、CloudEvent のいずれかでトリガーされるかどうかによって、異なる方法を使用して呼び出されます。

11.6.3.1. HTTP 要求でトリガーされる関数

受信 HTTP リクエストを受信すると、関数は標準の Go コンテキスト を最初のパラメーターとして使用して呼び出され、その後に http.ResponseWriter および http.Request パラメーターが続きます。標準の Go 手法を使用してリクエストにアクセスし、関数に対応する HTTP レスポンスを設定できます。

HTTP 応答の例

func Handle(ctx context.Context, res http.ResponseWriter, req *http.Request) {
  // Read body
  body, err := ioutil.ReadAll(req.Body)
  defer req.Body.Close()
  if err != nil {
	http.Error(res, err.Error(), 500)
	return
  }
  // Process body and function logic
  // ...
}