Go에서 람다 미들웨어에 대한 일반 유형을 만드는 방법

WBOY
풀어 주다: 2024-02-06 09:35:11
앞으로
480명이 탐색했습니다.

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

질문 내용

저는 aws 람다에서 go를 사용하고 있으며 일반적인 미들웨어 솔루션을 찾고 있습니다. 다음 코드가 있습니다:

으아악

미들웨어 함수에는 이 유형을 사용하는 매개변수 events.apigatewaywebsocketproxyrequest 因为目标处理程序 wshandler가 있습니다.

아래와 같이 매개변수event events.apigatewayproxyrequest를 취하는 또 다른 핸들러가 있습니다. 매개변수가 일치하지 않아 이 미들웨어를 사용할 수 없습니다.

으아악

미들웨어 핸들을 interface{}로 변경해 보았지만 작동하지 않았습니다. go는 이 유형에 대해 불평합니다.

으아악

모든 핸들러 유형에 대해 미들웨어가 작동하도록 하는 방법이 있나요?


정답


내 시스템에 복제할 수 있었던 작동하는 솔루션을 공유하겠습니다. 먼저 제가 사용하는 프로젝트 레이아웃을 공유하겠습니다.

으아악

이제 코드에 집중해 보겠습니다.

middlewares/middlewares.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!