>  기사  >  백엔드 개발  >  Go에서 람다 미들웨어에 대한 일반 유형을 만드는 방법

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

WBOY
WBOY앞으로
2024-02-06 09:35:11481검색

如何在 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으로 문의하시기 바랍니다. 삭제