웹 프론트엔드 프런트엔드 Q&A 프런트엔드는 GraphQL API를 어떻게 호출하나요?

프런트엔드는 GraphQL API를 어떻게 호출하나요?

Nov 27, 2019 am 11:28 AM
프런트 엔드

프런트엔드는 GraphQL API를 어떻게 호출하나요?

GraphQL은 API용 쿼리 언어이자 데이터 쿼리용 런타임입니다. GraphQL은 API의 데이터에 대한 완전하고 이해하기 쉬운 설명을 제공하므로 클라이언트는 중복 없이 필요한 데이터를 정확히 얻을 수 있습니다.

GraphQL에는 개발자가 GraphQL 서버를 구축하는 데 도움이 되도록 다양한 언어에 대한 서버 측 구현이 있습니다. (추천 학습: 프론트엔드 동영상)

그리고 gq-loader는 프론트엔드 프로젝트를 위한 클라이언트 측 구현이라고 생각하면 됩니다. 그 목적은 프론트엔드 개발을 돕는 것입니다. 학생들은 GraphQL API를 더 쉽게 호출할 수 있어 프런트엔드 개발자가 일반 js 모듈처럼 쉽게 GraphQL을 사용할 수 있어 프런트엔드 개발자가 import 또는 require를 통해 .gql 및 .graphql 파일을 js 파일로 가져올 수 있습니다. 그런 다음 직접 전화하세요.

그리고 #import 구문을 통해 조각과 같은 다른 .gql 파일 가져오기도 지원합니다.

#import는 #require 및 #include라는 두 가지 별칭도 제공합니다. 이 두 별칭의 사용법과 동작은 #import와 완전히 동일합니다.

Installation

npm install gq-loader --save-dev
로그인 후 복사

또는

yarn add gq-loader
로그인 후 복사

기본 사용법

다른 로더와 마찬가지로 먼저 webpack.config.js에 gq-loader 구성을 추가합니다.

{
  test: /\.(graphql|gql)$/,
  exclude: /node_modules/,
  use: {
    loader: 'gq-loader'
    options: {
      url: 'Graphql Server URL'
    }
  }
}
로그인 후 복사

그런 다음 import를 통해 js 파일을 가져올 수 있습니다. .gql 파일을 가져와서 사용합니다. 이미 작동 중인 Graphql 서버가 있다고 가정합니다. 그런 다음 먼저 사용자를 쿼리할 수 있는 getUser.gql을 만듭니다. , 우리는 다른 . #import를 통해 gql 파일 조각.gql을 반환합니다. 이 파일에서는 반환할 사용자의 필드 정보를 설명하므로 이를 다른 위치에서 "재사용"할 수도 있습니다. 이 파일

#import './fragment.gql' 
query MyQuery($name: String) {
  getUser(name: $name)
    ...userFields
  }
}
로그인 후 복사

좋아요. js 파일에서 getUser.gql을 가져와 사용자를 쿼리하는 데 사용합니다. 살펴보겠습니다.

fragment userFields on User {
  name
  age
}
로그인 후 복사

getUser를 호출할 때 함수 매개변수를 GraphQL 전달 변수에 제공할 수 있으며 이러한 변수는 쿼리 매개변수입니다. .

사용자 정의된 요청

기본적으로 gq-loader는 graphql 요청을 완료하는 데 도움이 되지만 일부 시나리오에서는 모든 요청을 직접 제어할 수도 있습니다. 그렇다면 요청 속성을 통해 "사용자 정의"할 수도 있습니다. 예시를 보세요. 먼저 로더 구성을 약간 변경해야 합니다.

import getUser from './getUser.gql';
import React from 'react';
import ReactDOM from 'react-dom';
async function query() {
  const user = await getUser({ name: 'bob' });
  console.log('user', user);
}
function App() {
  return <button onClick={query}>click</button>;
}
ReactDOM.render(<App />, document.getElementById(&#39;root&#39;));
로그인 후 복사

your_request_module_path에 사용자 정의 요청 모듈 경로를 입력하세요. gq-loader는 자동으로 해당 요청 모듈을 로드하고 사용하며, 모듈은 "요청 기능"만 변경하면 됩니다. ", 다음 사용자 정의 예를 보세요

{
  test: /\.(graphql|gql)$/,
  exclude: /node_modules/,
  use: {
    loader: &#39;gq-loader&#39;
    options: {
      url: &#39;Graphql Server URL&#39;,
      //指定自动请求模块路径
      request: require.resolve(&#39;your_request_module_path&#39;);
    }
  }
}
로그인 후 복사

그 중 options는 .gql 파일을 가져온 후 "함수의 두 번째 매개 변수"입니다. 예를 들어 this

onst $ = require(&#39;jquery&#39;);
//url 是要请求的 GraphQL 服务地址
//data 是待发送的数据
//options 是自定义选项
module.exports = function(url, data, options){
  //如果有需要还可以处理 options
  return $.post(url, data);
};
로그인 후 복사

와 같이 options 매개 변수를 전달할 수 있습니다. js에서 gq-loader의 확장자에 대해 값이 구성됩니다. 가져올 때 확장자는 생략할 수 없습니다. 이 옵션은 .gql 파일 및 기타 .gql 파일에만 적용됩니다.

위 내용은 프런트엔드는 GraphQL API를 어떻게 호출하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Apr 25, 2023 pm 07:41 PM

Vue.js는 오늘날 프런트엔드 개발에서 매우 인기 있는 프레임워크가 되었습니다. Vue.js가 계속 발전함에 따라 단위 테스트는 점점 더 중요해지고 있습니다. 오늘은 Vue.js 3에서 단위 테스트를 작성하는 방법을 살펴보고 몇 가지 모범 사례와 일반적인 문제 및 솔루션을 제공하겠습니다.

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 Mar 16, 2024 pm 12:09 PM

PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 Apr 25, 2023 pm 07:57 PM

크로스 도메인은 개발 과정에서 자주 접하는 시나리오이며, 인터뷰에서도 자주 거론되는 문제이기도 합니다. 일반적인 크로스 도메인 솔루션과 그 뒤에 숨은 원칙을 익히면 개발 효율성이 향상될 뿐만 아니라 인터뷰에서도 더 나은 성과를 낼 수 있습니다.

노드의 버퍼에 대해 자세히 알아보기 노드의 버퍼에 대해 자세히 알아보기 Apr 25, 2023 pm 07:49 PM

초기에 JS는 브라우저 측에서만 실행되었습니다. 유니코드로 인코딩된 문자열은 처리하기 쉬웠지만 바이너리 및 유니코드가 아닌 인코딩된 문자열을 처리하는 것은 어려웠습니다. 그리고 바이너리는 컴퓨터의 가장 낮은 데이터 형식인 비디오/오디오/프로그램/네트워크 패키지입니다.

프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? 프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? Jun 10, 2023 pm 05:00 PM

인터넷 기술이 발전하면서 프론트엔드 개발이 점점 더 중요해지고 있습니다. 특히 모바일 장치의 인기는 효율적이고 안정적이며 안전하고 유지 관리가 쉬운 프런트 엔드 개발 기술을 요구합니다. 빠르게 발전하는 프로그래밍 언어로서 Go 언어는 점점 더 많은 개발자가 사용하고 있습니다. 그렇다면 프론트엔드 개발에 Go 언어를 사용하는 것이 가능할까요? 다음으로 이 글에서는 프론트엔드 개발에 Go 언어를 사용하는 방법을 자세히 설명하겠습니다. 먼저 프론트엔드 개발에 Go 언어가 사용되는 이유를 살펴보겠습니다. 많은 사람들이 Go 언어가 언어라고 생각합니다.

C# 개발 경험 공유: 프런트엔드 및 백엔드 공동 개발 기술 C# 개발 경험 공유: 프런트엔드 및 백엔드 공동 개발 기술 Nov 23, 2023 am 10:13 AM

C# 개발자로서 우리의 개발 작업에는 일반적으로 프런트엔드와 백엔드 개발이 포함됩니다. 기술이 발전하고 프로젝트의 복잡성이 증가함에 따라 프런트엔드와 백엔드의 공동 개발이 점점 더 중요해지고 복잡해졌습니다. 이 문서에서는 C# 개발자가 개발 작업을 보다 효율적으로 완료하는 데 도움이 되는 몇 가지 프런트 엔드 및 백엔드 공동 개발 기술을 공유합니다. 인터페이스 사양을 결정한 후 프런트엔드와 백엔드의 공동 개발은 API 인터페이스의 상호 작용과 분리될 수 없습니다. 프론트엔드와 백엔드 협업 개발이 원활하게 진행되기 위해서는 가장 중요한 것은 좋은 인터페이스 사양을 정의하는 것입니다. 인터페이스 사양에는 인터페이스 이름이 포함됩니다.

See all articles