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"];
};
고급 보조 인원, 서로 다른 보조 인원을 관찰하다.
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"];
};
고급 보조 인원, 서로 다른 보조 인원을 관찰하다.
overwrite: true
schema:
- schema.graphql # seu schema graphql
generates:
appsync.d.ts:
plugins:
- typescript
우산도 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"];
};
고급 보조 인원, 서로 다른 보조 인원을 관찰하다.
graphql-codegen
💡 Você também pode adicionar "codegen": "graphql-codegen" ao seu package.json
na seção "scripts" e usar npm run codegen
.
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
Query
e Mutation
Post
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
eMutation[NomeDoEndpoint]Args
emPascalCase
. 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
)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á:
QueryPostArgs
e 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 파이프 없이 자동화됩니다.
크레디토스
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, 에스크리토 오리진 알멘토폴.
Reference
이 문제에 관하여(Como Usar TypeScript com AWS AppSync Lambda 파서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oieduardorabelo/como-usar-typescript-com-aws-appsync-lambda-resolvers-50kn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)