欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

前端調(diào)用GraphQLAPI的方法-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)前端調(diào)用GraphQL API的方法,文章內(nèi)容質(zhì)量較高,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、開(kāi)江網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為開(kāi)江等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

GraphQL是一個(gè)開(kāi)源的API數(shù)據(jù)查詢和操作語(yǔ)言及實(shí)現(xiàn)為了實(shí)現(xiàn)上述操作的相應(yīng)運(yùn)行環(huán)境。GraphQL相較于REST以及其他web service架構(gòu)提供了一種高效、強(qiáng)大和靈活的開(kāi)發(fā)web APIs的方式。它通過(guò)由客戶端根據(jù)所需定義數(shù)據(jù)結(jié)構(gòu),同時(shí)由服務(wù)端負(fù)責(zé)返回相同數(shù)據(jù)結(jié)構(gòu)的對(duì)應(yīng)數(shù)據(jù)的方式避免了服務(wù)端大量冗余數(shù)據(jù)的返回,但與此同時(shí)也意味著這種方式不能有效利用起查詢結(jié)果的web緩存。GraphQL這種查詢語(yǔ)言所帶來(lái)的靈活性和豐富性的同時(shí)也增加了復(fù)雜性,使得這項(xiàng)技術(shù)對(duì)于簡(jiǎn)單APIs并不是好的選擇。

而 gq-loader 是一個(gè) webpack 插件,你可以認(rèn)為它一針對(duì)前端項(xiàng)目的一種 client 端實(shí)現(xiàn),它的目的是幫助前端開(kāi)發(fā)同學(xué)更簡(jiǎn)便的調(diào)用 GraphQL API,它讓前端開(kāi)發(fā)人員在使用 GraphQL 時(shí)更加方便,像普通 js 模塊一樣輕松自如,使前端開(kāi)發(fā)人員能在 js 文件中通過(guò) import 或 require 導(dǎo)入 .gql 和 .graphql 文件,然后直接調(diào)用。

并且它還支持通過(guò) #import 語(yǔ)法導(dǎo)入其它 .gql 文件,比如 fragments。

#import 還提供了兩個(gè)別名,分別是 #require 和 #include,這兩個(gè)別名和 #import 的用法及行為完全一致。

安裝

npm install gq-loader --save-dev

或者

yarn add gq-loader

基本使用

如同其它 loader 一樣,首先,我們?cè)?webpack.config.js 中添加 gq-loader 的配置

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

然后,我們就可以在 js 文件中通過(guò) import 來(lái)導(dǎo)入 .gql 文件使用它了,我們來(lái)一個(gè)簡(jiǎn)單的示例,假設(shè)已經(jīng)有一個(gè)可以工作的 Graphql Server,那么,我們先創(chuàng)建一個(gè)可以查詢用戶的 getUser.gql

#import './fragment.gql' 
query MyQuery($name: String) {
  getUser(name: $name)
    ...userFields
  }
}

可以看到,我們通過(guò) #import 引用了另外一個(gè) .gql 文件 fragment.gql,在這個(gè)文件中我們描術(shù)了要返回的 user 的字段信息,這樣我們就能在不同的地方「重用」它了,我們也創(chuàng)建一下這個(gè)文件

fragment userFields on User {
  name
  age
}

好了,我們可以在 js 文件中直接導(dǎo)入 getUser.gql,并且使用它查詢用戶了,從未如此簡(jiǎn)便,我們來(lái)看看

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('root'));

在調(diào)用 getUser 時(shí),我們可以給函數(shù)參數(shù)向 GraphQL 傳遞變量,這些變量就是我們的查詢參數(shù)。

自定義請(qǐng)求

默認(rèn) gq-loader 就會(huì)幫你完成 graphql 請(qǐng)求,但某些場(chǎng)景下或許你想自已控制所有請(qǐng)求,如果有這樣需要,我們還可以通過(guò) request 屬性來(lái)「自定義」請(qǐng)求,看一下示例,需要先稍微改動(dòng)一下 loader 配置

{
  test: /\.(graphql|gql)$/,
  exclude: /node_modules/,
  use: {
    loader: 'gq-loader'
    options: {
      url: 'Graphql Server URL',
      //指定自動(dòng)請(qǐng)求模塊路徑
      request: require.resolve('your_request_module_path');
    }
  }
}

在 your_request_module_path 填寫(xiě)自定義請(qǐng)求模塊路徑,gq-loader 將自動(dòng)加載并使用對(duì)應(yīng)請(qǐng)求模塊,模塊只需要改出一個(gè)「請(qǐng)求函數(shù)即可」,看如下自定義示例

onst $ = require('jquery');
//url 是要請(qǐng)求的 GraphQL 服務(wù)地址
//data 是待發(fā)送的數(shù)據(jù)
//options 是自定義選項(xiàng)
module.exports = function(url, data, options){
  //如果有需要還可以處理 options
  return $.post(url, data);
};

其中,options 是導(dǎo)入 .gql 文件后「函數(shù)的第二個(gè)參數(shù)」,比如,可以這樣傳遞 options 參數(shù)

import getUser from './getUser.gql';
async function query() {
  const options = {...};
  const user = await getUser({ name: 'bob' }, options);
  console.log('user', user);
}

注意,gq-loader 的 extensions 無(wú)論配置何值,在 js 中 import 時(shí)都不能省略擴(kuò)展名,此選項(xiàng)僅作用于 .gql 文件 import 其它 .gql 文件

以上就是前端調(diào)用GraphQL API的方法,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊,感謝各位的閱讀。

網(wǎng)站欄目:前端調(diào)用GraphQLAPI的方法-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://aaarwkj.com/article22/ccdjcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、外貿(mào)建站、虛擬主機(jī)網(wǎng)站排名、網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
亚洲综合精品久久久一区| 国产精品久久一级黄片| 欧美大吊视频在线观看| 国产l精品国产亚洲区久久 | 日韩成人免费观看视频| 日本韩国精品视频在线| 日韩中文字幕综合不卡| 亚洲精品一区二区激情| 一区二区三区四区在线视频观看 | 久久精品国产亚洲av蜜点| 亚洲国产中文一区二区久久| 午夜日本大胆裸体艺术| 日韩成人三级一区二区| 中文字幕欧美人妻在线| 中文字幕在线感觉av| 在线国产丝袜自拍观看| 国产午夜福利一区在线| 永久黄区观看在线网址| 亚州国产成人综合精品| 国产自拍精品视频免费观看| 国产超码片内射在线| 亚洲综合中文字幕精品| 黄色国产传媒在线播放| 久久热在线视频精品视频| 侵犯人妻中文字幕一区二区| 风流少妇奶真白摸的好爽| 中国日本欧美最黄大片| 亚洲av综合日韩精品久久| 精品国产av一区二区麻豆| 国产精品久久久久精品爆| 黄色亚洲日本欧美在线观看| 人人妻人人澡人人爽的视频| 国产中文字二暮区2021综合| 日韩中字在线一区二区| 国产精品五月婷婷六月丁香| av一区二区三区网站| 久久婷婷国产综合色啪| 91精品超碰人人在线公开| 欧美日本一区二区四区| 日韩中文字幕一二三| 日韩一区二区三区免费播放|