GraphQL 요가와 GraphQL API
4068 단어 graphqlnodetypescriptapi
GraphQL에 익숙하지 않은 경우 official documentation 을 확인해야 합니다.
하지만 간단히 말해서:
"GraphQL은 API용 쿼리 언어이며 기존 데이터로 이러한 쿼리를 수행하기 위한 런타임입니다. GraphQL은 API의 데이터에 대한 완전하고 이해하기 쉬운 설명을 제공하고 클라이언트가 필요한 것을 정확히 요청할 수 있는 권한을 제공합니다. 시간이 지남에 따라 API를 더 쉽게 발전시키고 강력한 개발자 도구를 사용할 수 있습니다."
GraphQL의 주요 목표는 필요한 데이터만 가져오는 것입니다. 런타임을 사용하면 한 번의 요청으로 여러 리소스를 가져올 수도 있으므로 REST API에 비해 적은 코드로 더 많은 결과를 얻을 수 있습니다.
GraphQL의 또 다른 요점은 클라이언트와 일관되고 공유되는 강력한 유형 시스템을 사용하여 데이터를 정의하므로 모든 것이 투명하다는 것입니다.
먼저 새로운 노드 프로젝트를 생성하고 구성해야 합니다.
제 경우에는
graphql-yoga-api
라고 하는 디렉토리를 만드십시오.npm init -y
(설치할 일부 패키지와 충돌할 수 있으므로 프로젝트 이름
graphql-yoga
을 지정하지 않도록 주의하십시오.)그 후 es-lint와 함께 typescript를 사용하는 것을 좋아하므로 설치하겠습니다.
npm i typescript eslint ts-node ts-node-dev cross-env -D
그리고 cli를 사용하여 다음을 구성합니다.
npx tsc --init
npx eslint --init
마지막으로 업데이트
package.json
하고 일부 스크립트를 추가할 수 있습니다."scripts": {
"dev": "cross-env NODE_ENV=development ts-node-dev --exit-child --respawn src/index.ts",
"start": "ts-node src/index.ts"
}
이러한 명령에 대해 크게 걱정할 필요는 없지만 dev 명령 utiliza cross-env는 환경 변수를 설정한 다음 respawn을 사용하여 ts-node-dev를 호출하여 변경할 때 프로젝트를 계속 실행합니다. 시작 명령은 typescript를 직접 실행합니다. 원하는 경우 다음을 사용하여 실행하는 프로젝트를 컴파일할 수도 있습니다
node buld/index.js
.지금은 프로젝트 구조를 정의하기에 좋은 시간입니다. 이 프로젝트에서는 다음을 사용할 것입니다.
project
├── src
│ └─── index.ts
│
├── ....
└─── tsconfig.json
프로젝트 진입점은 src/index.ts입니다.
이제 GraphQL 종속성을 설치해야 합니다.
npm i graphql @graphql-tools/schema @graphql-yoga/node
먼저
index.ts
에서 GraphQL 유형을 정의합니다.const typeDefs = /* GraphQL */ `
type Query {
hello: String!
}
`;
데이터를 검색하는 함수를 정의합니다.
const resolvers = {
Query: {
hello: () => 'Hello World!',
},
};
지금 우리는 GraphQL에 필요한 모든 것을 가지고 있으므로 유형과 리졸버를 결합하고 서버를 시작하겠습니다.
const schema = makeExecutableSchema({typeDefs, resolvers});
async function main() {
const server = createServer({schema});
server.start();
}
이 시점에서 귀하의
index.ts
는 다음과 같아야 합니다.import {createServer} from '@graphql-yoga/node';
import {makeExecutableSchema} from '@graphql-tools/schema';
const typeDefs = /* GraphQL */ `
type Query {
hello: String!
}
`;
const resolvers = {
Query: {
hello: () => 'Hello World!',
},
};
const schema = makeExecutableSchema({typeDefs, resolvers});
async function main() {
const server = createServer({schema});
server.start();
}
main();
프로젝트를 실행하면 콘솔에 다음과 같은 메시지가 표시됩니다.
[INFO] 08:55:30 ts-node-dev ver. 2.0.0 (using ts-node ver. 10.8.2, typescript ver. 4.7.4)
💡 🧘 Yoga - Running GraphQL Server at http://127.0.0.1:4000/graphql
링크로 이동하면 API를 테스트하고 디버그하는 도구인 GraphiQL이 포함된 페이지가 표시됩니다. 방금 만든 것을 실행하려면 왼쪽 컨테이너에 다음을 입력한 다음 큰 재생 버튼을 누릅니다.
query {
hello
}
요청을 하면 올바른 컨테이너에 다음과 같은 내용이 표시됩니다.
{
"data": {
"hello": "Hello World!"
}
}
수행! 자, 이제 간단합니다. 이제 GraphQL 서버의 기본 사항을 알고 유형과 리졸버를 수정하여 이 최소한의 설정으로 무엇을 달성할 수 있는지 확인할 수 있습니다. GraphQL은 놀라운 도구이며 뛰어난 생태계를 가지고 있습니다. 꼭 사용해 보세요!
GraphQL에 대한 글은 계속 올릴 예정이니 더 보고 싶다면 저를 팔로우하세요!
Reference
이 문제에 관하여(GraphQL 요가와 GraphQL API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/krymancer/graphql-api-with-graphql-yoga-31p3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)