Apollo GraphQl 작업
23379 단어 graphqljavascriptwebdevbeginners
RestApi보다 GraphQl을 사용하면 많은 이점이 있습니다.
GraphQL의 많은 이점 중 하나는 단일 요청에서 정확하고 구체적인 데이터만 반환하여 과도하게 가져오거나 적게 가져오는 문제를 제거한다는 것입니다.
이 블로그는 이 쿼리 언어로 간단한 애완 동물 응용 프로그램을 만드는 방법을 보여줍니다.
다이빙하자
프로젝트 설정
새 프로젝트 파일을 만들고 그 안에 cd합니다. 노드를 생성하는 Initiate
npm init
명령입니다. js 프로젝트.npm init && npm install graphql uuid apollo-server && touch index.js
우리는 데이터베이스에 연결하지 않을 것입니다. 대신 모의 데이터베이스를 사용합니다.
index.js
에서 이전에 설치된 패키지를 가져옵니다.const { ApolloServer, gql } = require('apollo-server');
const { v4: uuidv4 } = require('uuid');
⏭️ 그 다음에는
Type definition
를 생성합니다.// Defining the types of the data that will be used in the application.
const defTypes = `
type Pet{
id: ID! # ! means Can't return null
name:String,
age: Int
}
type Query{ // Query is a reserved word in GraphQL
pets: [Pet]
pet(id:ID!):Pet!
}
type Mutation{
addPet(name: String!, age: Int!): Pet!
updatePet(id: ID!, name: String!, age: Int!): Pet!
deletePet(id: ID!): Pet!
}
`;
GraphQL 서버는 스키마를 사용하여 사용 가능한 데이터의 모양을 설명합니다. 이 스키마는 백엔드 데이터 저장소에서 채워진 필드가 있는 유형의 계층 구조를 정의합니다.
query
유형은 데이터 검색 작업에 사용되는 반면 mutation
유형은 데이터 생성 또는 수정 작업에 사용됩니다.⏭️ 다음으로 객체 배열이 될 더미 데이터를 만들어 보겠습니다.
const Pet = [
{
id: '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed',
name: 'Dog',
age: 2,
},
{
id: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
name: 'Cat',
age: 3,
},
];
⏭️ 다음으로 리졸버를 생성합니다.
// Create Resolvers
const resolvers = {
Query: {
pets: () => Pet,
//query a single pet
pet: (parent, args) => {
return Pet.find((pet) => pet.id === args.id);
},
},
Mutation: {
addPet: (parent, args) => {
const pet = { id: uuidv4(), name: args.name, age: args.age };
Pet.push(pet);
return pet;
},
deletePet: (parent, args) => {
const pet = Pet.find((pet) => pet.id === args.id);
Pet = Pet.filter((pet) => pet.id !== args.id);
return pet;
},
updatePet: (parent, args) => {
const pet = Pet.find((pet) => pet.id === args.id);
pet.name = args.name;
pet.age = args.age;
return pet;
},
},
};
A resolver is a function that's responsible for populating the data for a single field in your schema.
다음으로 Apollo 서버를 만듭니다.
// Create Apollo Server
const server = new ApolloServer({
typeDefs: gql(defTypes),
resolvers,
});
⏭️ 마지막으로 서버를 시작합니다
const port = process.env.PORT || 4001;
// Start Server
server.listen(port).then(({ url }) => {
console.log(`Server started at ${url}`);
});
index.js
파일은 다음과 같아야 합니다.
const { ApolloServer, gql } = require('apollo-server');
const { v4: uuidv4 } = require('uuid');
const defTypes = `
type Pet{
id: ID!
name:String,
age: Int
}
type Query{
pets: [Pet]
pet(id:ID!):Pet!
}
type Mutation{
addPet(name: String!, age: Int!): Pet!
updatePet(id: ID!, name: String!, age: Int!): Pet!
deletePet(id: ID!): Pet!
}
`;
// Create Dummy Data
const Pet = [
{
id: '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed',
name: 'Dog',
age: 2,
},
{
id: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
name: 'Cat',
age: 3,
},
];
// Create Resolvers
const resolvers = {
Query: {
pets: () => Pet,
//query a single pet
pet: (parent, args) => {
return Pet.find((pet) => pet.id === args.id);
},
},
Mutation: {
addPet: (parent, args) => {
const pet = { id: uuidv4(), name: args.name, age: args.age };
Pet.push(pet);
return pet;
},
deletePet: (parent, args) => {
const pet = Pet.find((pet) => pet.id === args.id);
Pet = Pet.filter((pet) => pet.id !== args.id);
return pet;
},
updatePet: (parent, args) => {
const pet = Pet.find((pet) => pet.id === args.id);
pet.name = args.name;
pet.age = args.age;
return pet;
},
},
};
// Create Apollo Server
const server = new ApolloServer({
typeDefs: gql(defTypes),
resolvers,
});
const port = process.env.PORT || 4001;
// Start Server
server.listen(port).then(({ url }) => {
console.log(`🏹🏹🏹Server started at ${url}`);
});
서버를 시작합시다.
URLhttp://localhost:4000을 방문하여
Query your server
버튼을 클릭합니다.GraphQL을 사용할 때 쿼리를
GET
요청으로, 변형을 PUT
, DELETE
또는 POST
요청으로 간주하십시오. 다음 명령을 사용하여 쿼리를 실행합니다.다음은 Apollo Server의 최고 기능 중 하나입니다.
필요한 만큼만 가져올 수 있습니다. 더도 말고 덜도 말고요. 제 경우에는 반려동물의 아이디만 가져왔습니다.
id
를 사용하여 애완 동물 한 마리를 되찾아 봅시다.다시, 쿼리에서 원하는 정보의 범위를 좁힐 수 있습니다. 제 경우에는
id
를 제거했습니다.'addPet' 돌연변이를 사용하여 새로운 애완 동물을 만들어 봅시다.
참고: ID는 설치한 'uuid' 패키지에서 파생됩니다.
반려동물 정보 업데이트
우편 배달부 사용
언제든지 Postman 또는 원하는 다른 API 테스트 소프트웨어를 사용하여 쿼리를 작성할 수 있습니다.
결론
이 기사가 Apollo-graphql을 시작하는 데 도움이 되었기를 바랍니다.
공식 문서에는 성능, 보안, 배포 및 모니터링에 대한 자세한 정보가 포함되어 있습니다.
원천
Apollo Docs
UUID
Reference
이 문제에 관하여(Apollo GraphQl 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/drsimplegraffiti/apollo-graphql-460o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)