파이프라인 해석기(JavaScript) - AWS AppSync

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

파이프라인 해석기(JavaScript)

AWS AppSync는 GraphQL 필드에서 해석기를 실행합니다. 경우에 따라 애플리케이션 사용 시 단일 GraphQL 필드를 해석하기 위해 여러 작업을 실행해야 합니다. 이제, 파이프라인 해석기를 사용해 개발자는 함수라고 하는 작업을 작성하고 순서대로 실행할 수 있습니다. 파이프라인 해석기는 예를 들어, 필드에 필요한 데이터를 가져오기 전에 권한 부여를 확인해야 하는 애플리케이션에 유용합니다.

JavaScript 파이프라인 해석기의 아키텍처에 대한 자세한 내용은 JavaScript 해석기 개요를 참조하세요.

파이프라인 해석기 생성

AWS AppSync 콘솔에서 스키마 페이지로 이동합니다.

다음 스키마를 저장합니다.

schema { query: Query mutation: Mutation } type Mutation { signUp(input: Signup): User } type Query { getUser(id: ID!): User } input Signup { username: String! email: String! } type User { id: ID! username: String email: AWSEmail }

변형 유형의 signUp 필드에 파이프라인 해석기를 연결하겠습니다. 오른쪽에 있는 변형 유형에서 signUp 변형 필드 옆에 있는 연결을 선택합니다. 해석기를 pipeline resolver로 설정하고 APPSYNC_JS 런타임을 설정한 다음 해석기를 생성합니다.

파이프라인 해석기는 사용자를 등록해 먼저 입력된 이메일 주소를 확인한 다음 사용자를 시스템에 저장합니다. 이메일 검증을 validateEmail 함수 내에 캡슐화하고 사용자를 saveUser 함수 내에 저장할 것입니다. validateEmail 함수가 먼저 실행되고, 이메일이 유효한 경우 saveUser 함수가 실행됩니다.

다음과 같이 실행 흐름이 진행됩니다.

  1. Mutation.signUp 해석기 요청 핸들러

  2. validateEmail 함수

  3. saveUser 함수

  4. Mutation.signUp 해석기 응답 핸들러

API의 다른 해석기 내에서 validateEmail 함수를 다시 사용할 것입니다. GraphQL 필드 간에 변경되기 때문에 ctx.args에는 액세스하지 않도록 하겠습니다. 대신 ctx.stash를 사용해 signUp(input: Signup) 입력 필드 인수의 이메일 속성을 저장할 수 있습니다.

요청 및 응답 함수를 바꿔서 해석기 코드를 업데이트하세요.

export function request(ctx) { ctx.stash.email = ctx.args.input.email return {}; } export function response(ctx) { return ctx.prev.result; }

생성 또는 저장을 선택하여 해석기를 업데이트합니다.

함수 생성

파이프라인 해석기 페이지의 함수 섹션에서 함수 추가를 클릭하고 새 함수 생성을 클릭합니다. 해석기 페이지를 거치지 않고 함수를 생성할 수 있는데, 이렇게 하려면 AWS AppSync 콘솔에서 함수 페이지로 이동합니다. 함수 생성 버튼을 선택합니다. 이메일이 유효하고 특정 도메인에서 전송되는지 확인하는 함수를 생성합니다. 이메일이 유효하지 않으면 함수에서 오류가 발생합니다. 이메일이 유효할 경우 제공된 입력을 전달합니다.

없음 유형의 데이터 원본을 생성했는지 확인합니다. 데이터 원본 이름 목록에서 이 데이터 원본을 선택합니다. 함수 이름validateEmail을 입력합니다. 함수 코드 영역에서 다음 스니펫으로 모든 내용을 덮어씁니다.

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { email } = ctx.stash; const valid = util.matches( '^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(myvaliddomain)\.com', email ); if (!valid) { util.error(`"${email}" is not a valid email.`); } return { payload: { email } }; } export function response(ctx) { return ctx.result; }

입력 내용을 검토한 다음 생성을 선택합니다. 방금 validateEmail 함수를 생성했습니다. 이 단계를 반복하여 다음 코드로 saveUser 함수를 생성합니다(단순화를 위해 없음 데이터 원본을 사용하고 함수가 실행된 후 사용자가 시스템에 저장된 것으로 가장함).

import { util } from '@aws-appsync/utils'; export function request(ctx) { return ctx.prev.result; } export function response(ctx) { ctx.result.id = util.autoId(); return ctx.result; }

방금 saveUser 함수를 생성했습니다.

파이프라인 해석기에 함수 추가

파이프라인 해석기에 방금 생성한 함수가 자동으로 추가되어야 합니다. 그렇지 않거나 함수 페이지를 통해 함수를 생성한 경우, signUp 해석기 페이지에서 함수 추가를 다시 클릭하여 연결할 수 있습니다. 해석기에 validateEmailsaveUser 함수를 모두 추가합니다. validateEmail 함수는 saveUser 함수 앞에 배치해야 합니다. 함수를 더 추가할 때 위로 이동아래로 이동 옵션을 사용해 함수 실행 순서를 다시 정리할 수 있습니다. 변경 사항을 검토한 후 저장을 선택합니다.

쿼리 실행

AWS AppSync 콘솔에서 쿼리 페이지로 이동합니다. 탐색기에서 변형을 사용하고 있는지 확인합니다. 그렇지 않다면 드롭다운 목록에서 Mutation을 선택한 다음 +를 선택합니다. 다음 쿼리를 입력합니다.

mutation { signUp(input: {email: "nadia@myvaliddomain.com", username: "nadia"}) { id username } }

다음과 유사하게 반환되어야 합니다.

{ "data": { "signUp": { "id": "256b6cc2-4694-46f4-a55e-8cb14cc5d7fc", "username": "nadia" } } }

파이프라인 해석기를 사용하여 성공적으로 사용자를 등록했고, 입력한 이메일을 검증했습니다.