GraphQL을 통한 서비스 없음

8741 단어 apolloservergraphql
절대 최소형GraphQL 서버(실존주의 위기의 암시)
나는 아폴로 초급 과정 Odyssey interactive tutorials에 참가했다. 지난 1년 동안 나는 GraphQL을 끊임없이 배우려고 시도했지만 실패했다.중간에 나는 가장 간단한GraphQL 서버 설정이 어떤 모습인지 생각하기 시작했기 때문에 어떤 내용도 되돌려주지 않는 서버를 만들었다.
이것은 분명히 실용적인 예가 아니다.합리적인 기본값이 있는 기본 Apollo 서버 예를 보려면 다음을 수행하십시오.

  • Apollo Server CodeSandbox template- 분할하여 5초 동안 실시간 GraphQL 서버
  • 1개 획득

  • https://github.com/apollographql/odyssey-lift-off-part1/tree/complete-아폴로 오드세이 과정 동반 응용 프로그램
  • Official documentation “Getting Started” tutorial
  • 우리 뭐가 필요해?

  • 모든 노드js 응용 프로그램.나는 처음부터 내 기계에 내 것을 로컬로 구축했지만, Glitch나Codesandbox 같은 IDE를 사용하거나 기존 프로젝트를 사용할 수 있다.
  • 이 현지에서 건설되면 nodenpm을 설치해야 한다.
  • 내 애플리케이션을 만드는 방법:
  • 애플리케이션 디렉토리를 만들고
  • 으로 이동
  • 실행 npm init 모든 기본값
  • (옵션) nodemon을 설치하여 우리의 응용 프로그램을 감시하고 코드 변경 시 자동으로 다시 불러오기: npm i --save-dev nodemon
  • package.json을 켜고 "start": "nodemon index.js localhost 4000"scripts에 추가
  • 에서 기본 스크립트 파일(예: index.js)을 만듭니다.이것이 바로 우리가 서버 코드를 작성해야 하는 곳이다.그것은 모든 것, 예를 들면 app.js이라고 할 수 있다.package.json의 명령과 일치하는지 확인합니다.
  • 템플릿을 사용하거나 기존 애플리케이션에 추가할 경우 package.json을 열고 기본 스크립트의 이름을 확인하십시오.
  • GraphQL 서버를 설치할 준비가 되어 있습니다!

    층계

  • 설치 종속성 및 가져오기 함수
  • 유형 정의 모델 만들기
  • 새 Apollo Server 객체 만들기
  • 부팅 서버
  • 1. 종속성 및 가져오기 기능 설치


    우리는 두 개의 가방을 의존항으로 필요로 한다. graphqlapollo-server이다.
    # Run in your app root directory
    npm install apollo-server graphql
    
    그리고 스크립트 파일에서 ApolloServer에서 gqlapollo-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]
      }
    `;
    
    자세한 내용:
  • https://graphql.org/learn/schema/
  • https://www.apollographql.com/docs/apollo-server/schema/schema/
  • https://www.apollographql.com/docs/apollo-server/api/apollo-server/#gql
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
  • 3. 서버 개체 만들기


    현재, 우리는 ApolloServer 구조 함수 클래스 i를 실례화합니다. 우리는 새로운 Apollo Server 대상을 만들고, 이것은 옵션의 대상을 받아들입니다.
    const server = new ApolloServer({
      // TODO add options here
    });
    
    이 테스트 프로그램에 대해 우리는 단계 2의 옵션 typeDefs을 통과했다.아래 링크에서 전체 옵션 목록을 볼 수 있습니다.
    const server = new ApolloServer({
      typeDefs, // shorthand for `typeDefs: typeDefs`
    });
    
    자세한 내용:
  • https://www.apollographql.com/docs/apollo-server/api/apollo-server/#options
  • 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"아이콘을 누르면 저희 서버는 데이터를 되돌려줍니다. (이 예에서 데이터가 부족합니다.)

    그렇습니다. 저희 서버는 아무것도 제공하지 않습니다!😁 다음은 완전한 서버 코드입니다.
    자세한 내용:
  • https://www.apollographql.com/docs/apollo-server/api/apollo-server/#listen
  • https://github.com/graphql/graphql-playground
  • 자유로운 평론


    충돌 해결자는 어디에 있습니까?
    흥미로운 것은 유형 정의를 제공해야 하지만 (우리가 빈 옵션 대상을 전달하거나 파라미터를 전달하지 않으면 서버가 실행되지 않을 것이다) 기술적으로는 전송 해상도 없이GraphQL 서버를 실행할 수 있다는 것이다.😮. (물론 데이터를 되돌려주는 서버를 만들기 위해 해상도를 작성해야 합니다.)
    설명: resolvers은 필수이지만 명확한 해석 프로그램이 제공되지 않으면 Apollo Server에서 기본 해석 프로그램을 제공합니다.맨 위에서 실행될 때, 여기 있는 코드처럼, 부모에서 어떤 내용도 찾을 수 없고, null으로 되돌아갈 수 없다. 그러나 이것은 해석 프로그램이 전달되지 않았음에도 불구하고, 우리가 오류를 얻지 못한 이유를 설명한다.논리 참조: https://www.apollographql.com/docs/apollo-server/data/resolvers/#default-resolvers
    아니, 이것은 보통 자바스크립트야
    프런트엔드 개발을 주로 하는 사람으로서 저는 이전에 API 서버를 구축한 적이 없습니다. 솔직히 어떤 언어와 도구가 필요한지 모르겠습니다.이 예시 서버는 중간 단계의 vanilla JavaScript와 SDL로만 유형을 정의할 수 있음을 보여 줍니다.(데이터 검색 및 저장, 배포, CI/CD(등)에는 다른 언어와 도구에 대한 지식이 필요하지만 서버 자체를 설정할 필요는 없다고 생각합니다.)
    다음은요?
    나는 당연히 아무것도 돌아오지 않는 서버에 걸리고 싶지 않다😆. 다음 단계에서는 이러한 문제에 대해 살펴보겠습니다.
  • 시뮬레이션
  • 파서 및 데이터 소스
  • 배포
  • ?? ...추가
  • 다음 댓글 만나요!

    좋은 웹페이지 즐겨찾기