GraphQL 또는 Hasura로 이메일을 보내는 방법

이 기사에서는 GraphQL 또는 Hasura로 이메일을 보내는 방법을 설명합니다. 저장 프로시저 또는 데이터베이스 기능을 기반으로 하는 Hasura가 제안하는 솔루션은 데이터베이스에 비즈니스 논리를 추가하는 것을 의미하기 때문에 (분명히) 차선책입니다. 나는 이것에 대해 어떻게 언급해야할지 확신이 서지 않기 때문에 예의를 유지하기 위해 이 "해결책"에 대한 내 의견을 공유하지 않을 것입니다. 그러나 GraphQL 엔드포인트에 대한 호출을 "가로채는"HTTP API 게이트웨이를 생성하면 호출하는 URL 외에 프런트엔드 코드에서 아무 것도 변경하지 않고도 실제로 쉽게 이메일을 보낼 수 있습니다.

Hyperlambda이 그러한 API 게이트웨이 생성을 크게 지원하기 때문에 이것은 쉽습니다. 대략 10분 정도에 이러한 엔드포인트를 생성하는 비디오를 살펴보겠습니다.



코드의 기본 아이디어는 먼저 JWT Bearer 토큰을 추출한 다음 이를 Hasura의 GraphQL 끝점으로 전달하는 것입니다. 그런 다음 클라이언트가 제공한 모든 페이로드를 Hasura로 향하는 [http.post] 호출에 추가합니다. 호출이 반환되면 Hasura가 우리에게 반환하는 모든 것을 클라이언트에게 반환합니다. 이 시점에서 남은 유일한 질문은 GraphQL 엔드포인트를 호출하기 전이나 후에 이메일을 보내야 하는지 여부입니다. 예를 들어 Hasura가 성공 상태 코드를 반환했는지 여부를 확인하여 게이트웨이를 쉽게 확장할 수 있지만 이는 독자에게 맡기겠습니다.

시작하려면 먼저 여기에서 low-code Hyperlambda cloudlet에 가입하세요. 그런 다음 위의 비디오를 보고 이 문서의 맨 아래에서 코드를 찾으십시오. 저는 Hasura 프로젝트가 없기 때문에 실제로 GraphQL 이메일 보내기 로직을 ​​테스트하지 않았고 개인적으로 분명한 이유로 Hyperlambda를 선호합니다.

// Accept any arguments.
.arguments:*

// Validating user is giving us a valid email address.
validators.email:x:@.arguments/*/email

// Retrieving JWT Bearer token to transmit to Hasura.
request.headers.get:Authorization

// Lambda object responsible for sending our email.
.send-email
   mail.smtp.send
      message
         to
            foo
         subject:This is subject
         entity:text/plain
            content:Hello world from Hyperlambda HTTP API gateway.

/* Changes the "to" parts of our send email invocation
 * to whatever argument we're given by client.
 */
set-value:x:@.send-email/**/foo
   get-value:x:@.arguments/*/email
set-name:x:@.send-email/**/foo
   get-value:x:@.arguments/*/name

// Forwarding arguments given to endpoint to invocation to Hasura
add:x:+/*/payload
   get-nodes:x:@.arguments/*

// Invoking Hasura's GraphQL endpoint.
http.post:"https://my-app.hasura.io/graphql-endpoint"
   headers
      Authorization:x:@request.headers.get
   payload
   convert:true

// Send the email AFTER invoking GraphQL endpoint.
eval:x:@.send-email

// Return result to caller.
add:x:+
   get-nodes:x:@http.post/*/content/*
return


이것으로 46줄의 코드로 Hasura GraphQL HTTP 끝점을 호출할 때 이메일을 보낼 수 있습니다. :)

물론 게이트웨이에 적용하려는 모든 비즈니스 논리를 적용할 수 있습니다. 예를 들어 위의 코드에서 전달된 이메일 인수가 유효한 이메일인지 확인하고 있습니다. 향후 기사에서는 추가 인터셉터를 생성하여 적용하려는 모든 비즈니스 로직을 적용하고 원하는 대로 GraphQL 끝점을 가로채는 방법을 통해 이를 실제로 수행하는 방법에 대해 자세히 설명할 것입니다.

이 솔루션은 분명히 Supabase 및 PostgREST API에 대해 동일하게 잘 작동하며 "에지 기능"에 비해 대부분의 솔루션을 이해하기가 훨씬 더 간단해집니다.

결론



물론 이 시점에서 분명한 질문은

Why on earth do I need GraphQL and Hasura when I’ve got Hyperlambda?



나는 위의 질문에 대한 지능적인 대답이 전혀 없으며 그것에 대한 지능적인 대답도 존재하지 않는다고 생각합니다. 그러나 대답이 있다면 아래 의견에서 저를 계몽하십시오 ...

좋은 웹페이지 즐겨찾기