ホームページ > バックエンド開発 > Golang > Goでラムダミドルウェアのジェネリック型を作成する方法

Goでラムダミドルウェアのジェネリック型を作成する方法

WBOY
リリース: 2024-02-06 09:35:11
転載
546 人が閲覧しました

如何在 go 中为 lambda 中间件创建泛型类型

質問内容

go with aws lambdaを使用しており、一般的なミドルウェアソリューションを探しています。次のコードがあります:

リーリー

ターゲット ハンドラー wshandler がこの型を使用するため、ミドルウェア関数にはパラメーター events.apigatewaywebsocketproxyrequest があります。

次に示すように、パラメーター event events.apigatewayproxyrequest を受け取る別のハンドラーがあります。パラメータが一致しないため、このミドルウェアは使用できません。

リーリー

ミドルウェア ハンドルを interface{} に変更しようとしましたが、うまくいきませんでした。 go はこのタイプについて文句を言います。

リーリー

ミドルウェアをどのタイプのハンドラーでも動作させる方法はありますか?


正解


私のシステムで再現できた実用的なソリューションを共有させてください。まず、私が使用しているプロジェクト レイアウトを共有しましょう:

リーリー

それでは、コードに注目してみましょう。

ミドルウェア/ミドルウェア.go

コードは以下のように表示されます:

リーリー

基本的な概念を要約しましょう:

  • 一般イベントとなる event 構造を定義します。これは、record 構造体のラッパーです。
  • record 構造は、構造の埋め込みを使用して、処理するすべてのイベント (event.apigatewayproxyrequestsqsevent など) を埋め込みます。
  • ミドルウェア署名ではこれを可能な限り一般的なものにすることにしています。

events/http_event.json

リーリー

ここでは何も言うことはありません。

events/sqs_event.json

リーリー

ここでも同じことが当てはまります。

hello-world/main.go

リーリー

イベント情報の取得方法にご注意ください。

sqs/main.go

リーリー

決勝

考慮すべき考慮事項がいくつかあります:

  1. この解決策に従う前に、型パラメーターを使用しようとしましたが、成功しませんでした。ミドルウェアの署名では許可されていないようです。
  2. コードは簡略化されすぎており、本番環境に対応していません。

これが役に立った場合、または他に何か必要な場合は、お知らせください。ありがとうございます。

以上がGoでラムダミドルウェアのジェネリック型を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート