GraphQL을 통한 서비스 없음
8741 단어 apolloservergraphql
나는 아폴로 초급 과정 Odyssey interactive tutorials에 참가했다. 지난 1년 동안 나는 GraphQL을 끊임없이 배우려고 시도했지만 실패했다.중간에 나는 가장 간단한GraphQL 서버 설정이 어떤 모습인지 생각하기 시작했기 때문에 어떤 내용도 되돌려주지 않는 서버를 만들었다.
이것은 분명히 실용적인 예가 아니다.합리적인 기본값이 있는 기본 Apollo 서버 예를 보려면 다음을 수행하십시오.
Apollo Server CodeSandbox template- 분할하여 5초 동안 실시간 GraphQL 서버
https://github.com/apollographql/odyssey-lift-off-part1/tree/complete-아폴로 오드세이 과정 동반 응용 프로그램
우리 뭐가 필요해?
node
과 npm
을 설치해야 한다.npm init
모든 기본값 npm i --save-dev nodemon
package.json
을 켜고 "start": "nodemon index.js localhost 4000"
을 scripts
에 추가index.js
)을 만듭니다.이것이 바로 우리가 서버 코드를 작성해야 하는 곳이다.그것은 모든 것, 예를 들면 app.js
이라고 할 수 있다.package.json
의 명령과 일치하는지 확인합니다.package.json
을 열고 기본 스크립트의 이름을 확인하십시오.층계
1. 종속성 및 가져오기 기능 설치
우리는 두 개의 가방을 의존항으로 필요로 한다.
graphql
과 apollo-server
이다.# Run in your app root directory
npm install apollo-server graphql
그리고 스크립트 파일에서 ApolloServer
에서 gql
과 apollo-server
을 가져옵니다. 예를 들어 index.js
입니다.우리는 다음 단계에서 그것들을 사용할 것이다.const { ApolloServer, gql } = require("apollo-server");
2. 우리의 유형 정의 모델 만들기
다음은 서버가 분석하고 되돌려줄 데이터의 모양을 설명하는 형식 정의를 만듭니다.GraphQL 모드로 언어를 정의하는 문법으로 정의를 문자열 문자로 작성한 다음 1단계에서 가져온 템플릿 문자 표기
gql
에 전달합니다.const typeDefs = gql`
# TODO add type definitions here
`;
여러 가지 유형이 있지만 여기서 우리는 Query
유형만 정의하고 클라이언트는 그 중에서 nothings
을 조회할 수 있다.이 필드는 문자열 그룹을 되돌려줍니다. (이것은 중요하지 않습니다. 아무것도 되돌려줄 생각은 없지만, 반드시 정의해야 합니다.) 공백으로 만들 수 있습니다.const typeDefs = gql`
type Query {
nothings: [String]
}
`;
자세한 내용:3. 서버 개체 만들기
현재, 우리는
ApolloServer
구조 함수 클래스 i를 실례화합니다. 우리는 새로운 Apollo Server 대상을 만들고, 이것은 옵션의 대상을 받아들입니다.const server = new ApolloServer({
// TODO add options here
});
이 테스트 프로그램에 대해 우리는 단계 2의 옵션 typeDefs
을 통과했다.아래 링크에서 전체 옵션 목록을 볼 수 있습니다.const server = new ApolloServer({
typeDefs, // shorthand for `typeDefs: typeDefs`
});
자세한 내용:4. 서버 시작
마지막으로, 우리는 서버를 시작하는 명령을 추가했다.
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
npm run start
을 실행하여 첫 번째 GraphQL 서버를 시작합니다.CLI 콘솔에서 이와 유사한 내용을 볼 수 있습니다.[nodemon] starting `node index.js localhost 4000`
🚀 Server ready at http://localhost:4000/
서버가 실행될 때 서버 URL 자체의 GraphQL Playground에 액세스할 수 있습니다. 이 예에서는 localhost:4000
입니다.그것은 우리 서버와 상호작용할 수 있는 신속하고 편리한 그래픽 인터페이스를 제공했다.시작
{
을 쓰고 스페이스바를 눌러 사용 가능한 필드 목록을 엽니다.여기 우리는 단지 하나의 필드만 있다. nothings
.일단
nothings
에 조회되면 "Run"아이콘을 누르면 저희 서버는 데이터를 되돌려줍니다. (이 예에서 데이터가 부족합니다.)그렇습니다. 저희 서버는 아무것도 제공하지 않습니다!😁 다음은 완전한 서버 코드입니다.
자세한 내용:
자유로운 평론
충돌 해결자는 어디에 있습니까?
흥미로운 것은 유형 정의를 제공해야 하지만 (우리가 빈 옵션 대상을 전달하거나 파라미터를 전달하지 않으면 서버가 실행되지 않을 것이다) 기술적으로는 전송 해상도 없이GraphQL 서버를 실행할 수 있다는 것이다.😮. (물론 데이터를 되돌려주는 서버를 만들기 위해 해상도를 작성해야 합니다.)
설명:
resolvers
은 필수이지만 명확한 해석 프로그램이 제공되지 않으면 Apollo Server에서 기본 해석 프로그램을 제공합니다.맨 위에서 실행될 때, 여기 있는 코드처럼, 부모에서 어떤 내용도 찾을 수 없고, null
으로 되돌아갈 수 없다. 그러나 이것은 해석 프로그램이 전달되지 않았음에도 불구하고, 우리가 오류를 얻지 못한 이유를 설명한다.논리 참조: https://www.apollographql.com/docs/apollo-server/data/resolvers/#default-resolvers아니, 이것은 보통 자바스크립트야
프런트엔드 개발을 주로 하는 사람으로서 저는 이전에 API 서버를 구축한 적이 없습니다. 솔직히 어떤 언어와 도구가 필요한지 모르겠습니다.이 예시 서버는 중간 단계의 vanilla JavaScript와 SDL로만 유형을 정의할 수 있음을 보여 줍니다.(데이터 검색 및 저장, 배포, CI/CD(등)에는 다른 언어와 도구에 대한 지식이 필요하지만 서버 자체를 설정할 필요는 없다고 생각합니다.)
다음은요?
나는 당연히 아무것도 돌아오지 않는 서버에 걸리고 싶지 않다😆. 다음 단계에서는 이러한 문제에 대해 살펴보겠습니다.
Reference
이 문제에 관하여(GraphQL을 통한 서비스 없음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ekafyi/serving-nothing-through-graphql-58cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)