Como Usar TypeScript com AWS AppSync Lambda 파서

Gerando tipos de TypeScript diretamente do seu esquema!



응, 베네페시오 씨가 티파도의 도표를 만들었어!형식의 도면을 정의합니다.
이러한 voc eyestiver usando Lambda como 파서는 노드를 실행하는 속도에서 AWS 응용 프로그램 동기화를 수행합니다.js, vocyent ambém pode usar 타자 스크립트.이것은 자동으로 인쇄되는 글꼴을 정의하는 좋은 예이다.Fazer isso manualmente pode ser entediante,e estaremos sujeito a erros e basicamente faremos o mesmo trabalho duas vezes!🙁 Não seriaótimo se vocêpudesse importar seus tipos graph para seu código automaticamente?
Neste artigo,mostrarei como gerar tipos 타자기 스크립트이것은 아주 좋은 해결 방안이다.
자!

청구서


AWS 응용 프로그램이 동기화되는 프로젝트에서 Vocèjádever는 그래픽(예: Vocèpode usar o examplo abaixo)을 정의하는 데 사용되는 구성입니다.
단락 os fins deste 자습서, usaremos esquema como 예:
type Query {
  post(id: ID!): Post
}

type Mutation {
  createPost(post: PostInput!): Post!
}

type Post {
  id: ID!
  title: String!
  content: String!
  publishedAt: AWSDateTime
}

input PostInput {
  title: String!
  content: String!
}

오프제트 호텔


불안정하다


Precisaremos instalar três pacotes:
npm i @graphql-codegen/cli @graphql-codegen/typescript @types/aws-lambda  -D
primeirosdois pacotes pertencem a 스위트룸 graphql-code-generator.O primeiroéa CLI base,enquanto O segundoéO plugin que gera O código TypeScript a partir de um esquema GraphQL.@types/aws-lambdaéuma cole ço de tipos 글씨체 원고.람바다 이벤트에 대한 정의(API 게이트웨이, S3, SNS 등), AWS 앱Sync의 uma para 파서(AppSyncResolverHandler)를 포함한다.Usaremos Essu분쿠 mais tarde, quando Constructuirmos nossos 해석기.

크리오 아쿠보 드 configura çã o


ehorade configurar graphql-codegen e dizer como gerar nossos tipos 글꼴.와모스 크리알 아쿠보 codegen.yml:
overwrite: true
schema:
  - schema.graphql # seu schema graphql

generates:
  appsync.d.ts:
    plugins:
      - typescript
개발 과정에서 코드(예제 없음: schema.graphql), 플러그인(typescript)과 개발 도구(appsync.d.ts)가 필요하다.이것은 필요한 대체품이다.

AWS 표준 지원


우산도 AWS AppSync Scalars, 탐프레시 사디제오 graphql-codegen 코모 레이저 레이더 회사로 추정된다.

💡 Você precisa declarar, no mínimo, os escalares que usa, mas pode ser uma boa ideia apenas declarar todos eles.


와모스 크리얄 움노보 아퀴보 appsync.graphql com o seguinte conte 분도:
scalar AWSDate
scalar AWSTime
scalar AWSDateTime
scalar AWSTimestamp
scalar AWSEmail
scalar AWSJSON
scalar AWSURL
scalar AWSPhone
scalar AWSIPAddress

⚠️ Não coloque esses tipos no mesmo arquivo de seu esquema principal. Você só precisa deles para geração de código e eles não devem entrar em seu deploy para o AWS AppSync.


Também precisamos dizer ao codegen como mapear esses escalares para o TypeScript.제10단,iremos 수정판 oarquivo codegen.yml.Adicione/edite as seguintesções:
schema:
  - schema.graphql
  - appsync.graphql # 👈 coloco isso

# e isso 👇
config:
  scalars:
    AWSJSON: string
    AWSDate: string
    AWSTime: string
    AWSDateTime: string
    AWSTimestamp: number
    AWSEmail: string
    AWSURL: string
    AWSPhone: string
    AWSIPAddress: string

Gerando o código


Estamos prontos com a configuraço.Éhora de gerar algum código!o seguinte comando를 실행합니다.
graphql-codegen

💡 Você também pode adicionar "codegen": "graphql-codegen" ao seu package.json na seção "scripts" e usar npm run codegen.


이곳은 트라바요 강 유역으로 면적이 appsync.d.ts평방미터이다.
export type Maybe<T> = T | null;
export type Exact<T extends { [key: string]: unknown }> = {
  [K in keyof T]: T[K];
};
export type MakeOptional<T, K extends keyof T> = Omit<T, K> &
  { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> &
  { [SubKey in K]: Maybe<T[SubKey]> };

/** Todos os AWS AppSync Scalars, mapeados para seus atuais valores */
export type Scalars = {
  ID: string;
  String: string;
  Boolean: boolean;
  Int: number;
  Float: number;
  AWSDate: string;
  AWSTime: string;
  AWSDateTime: string;
  AWSTimestamp: number;
  AWSEmail: string;
  AWSJSON: string;
  AWSURL: string;
  AWSPhone: string;
  AWSIPAddress: string;
};

export type Query = {
  __typename?: "Query";
  post?: Maybe<Post>;
};

export type QueryPostArgs = {
  id: Scalars["ID"];
};

export type Mutation = {
  __typename?: "Mutation";
  createPost: Post;
};

export type MutationCreatePostArgs = {
  post: PostInput;
};

export type Post = {
  __typename?: "Post";
  id: Scalars["ID"];
  title: Scalars["String"];
  content: Scalars["String"];
  publishedAt?: Maybe<Scalars["AWSDateTime"]>;
};

export type PostInput = {
  title: Scalars["String"];
  content: Scalars["String"];
};
고급 보조 인원, 서로 다른 보조 인원을 관찰하다.
  • Scalars
  • 계속해서 escalares básicos(ID, 문자열 등)를 사용하는 방법과 escalares personalizados da AWS를 사용하는 방법에 대해 설명합니다.
  • Query e Mutation
  • 이것은 무타쿠오 영사관의 종합적인 프로젝트다.
  • Post
  • Esteéo nosso tipo Post de nosso esquema traduzido para TypeScript.Étambém o valor de returno da query post e da mutaço createPost.
  • QueryPostArgs e MutationCreatePostArgs
  • 조회 post e da mutaço createPost에 대한 정보는 을 참조하십시오.

    💡 Você notou o padrão de nome aqui? Os tipos de argumento são sempre nomeados Query[NomeDoEndpoint]Args e Mutation[NomeDoEndpoint]Args em PascalCase. Isso é útil para saber quando você deseja preencher automaticamente os tipos em seu IDE.


    우산도스티보스 제라도스 호텔


    아그라 키그라모스 노소스 티포스, 우리의 시간!
    Vamos 도구 분석 프로그램 Query.post como 예제
    lambda sempre recebem 3 논증 설명서:
  • event: contém informaçes sobre a consulta de entrada(의논문, 감정 등)
  • context:contém informaçes sobre a funço Lambda executada
  • callback:uma funèo que vocèpode chamar quando seu manipulador for finalizado(se vocènèo estiver usando async/Promise)
  • AWS 애플리케이션의 운영 체제 형태로 모든 오류를 제거합니다.세계 각지에 존재하는 국가 DefinitelyTyped니오스 인스타라모스와모스 우사르!
    O tipo AppSyncResolverHandler leva dois argumentos.O primeiroéO tipo do objeto event.arguments e O segundoéO valor de Returno do resolver.
    nosso caso,será:QueryPostArgse Post, 각각.
    아쿠 이스타코모 우사로:
    import db from "./db";
    import { AppSyncResolverHandler } from "aws-lambda";
    import { Post, QueryPostArgs } from "./appsync";
    
    export const handler: AppSyncResolverHandler<QueryPostArgs, Post> = async (
      event
    ) => {
      const post = await db.getPost(event.arguments.id);
    
      if (post) {
        return post;
      }
    
      throw new Error("Not Found");
    };
    
    Agora,nosso manipulador Lambda se Bengiia da verificaão de tipo de 2 maneiras:
  • event.arguments:Serádo tipo QueryPostArgs(com os benefícios do preemption to automático!)
  • 델레트로노의 용기를 검증하고 당신의 답방 논증, Post(comum id, tItulo 등);ou o TypeScript mostraráum erro.
  • 우소 아바나도


    현재, 우리는 허가된 개성화된 서비스가 필요하다.Confira a documentação para mais detalhes !

    세인트폴


    tipos의 자동 솔루션으로 voc ãa apenas melhorarásua velocidade desenvolvimento e experiència, mas também garantriáque seus resolvers faam o que sua API espera.이것은 아주 좋은 해결 방안이다. 왜냐하면 그것은 매우 좋은 해결 방안이기 때문이다.
    Não se esqueça de executar novate o comando graphql-codegen cada vez que editar seu esquema!이 프로세스는 CI/CD 파이프 없이 자동화됩니다.

    크레디토스


  • How to use TypeScript with AppSync Lambda Resolvers, 에스크리토 오리진 알멘토폴.
  • 좋은 웹페이지 즐겨찾기