摸索graphQL在前端vue中使用过程(三)
创始人
2025-06-01 03:25:20
0

上回说到,那个请求拦截的一个过程,我上次不会看官网教程,这次,终于有了新的发现。

graphQL的interceptors(请求拦截器)

import ApolloClient from 'apollo-boost';const apolloClient = new ApolloClient({// 你需要在这里使用绝对路径uri: 'https://countries.trevorblades.com/',// headers:{"Authorization":"Basic aW5zaWdodHM6MTIz","content-type":"application/json"},request:(operation)=>{// 继续上次的探索之旅,每次请求之前执行这样的代码console.log("before=>",operation);// 每次请求都会执行这个拦截器,可以设置请求头operation.setContext({headers:{Authorization:"Basic aW5zaWdodHM6MTIz"}})console.log("after=>",operation.getContext().headers);},onError:(e)=>{// 失败错误信息打印console.log("err=>",e)},clientState:{},
})export default apolloClient;

错误处理

如果请求失败,这里的情况也会分为两种。
第一,可能是graphql的语法错误导致的请求。
第二,可能是networkError导致的错误,语法错误。

const apolloClient = new ApolloClient({// 你需要在这里使用绝对路径uri: 'https://countries.trevorblades.com/',// 请求选项fetchOptions: {credentials: 'include',//是否包含凭证},request:(operation)=>{operation.setContext({headers:{Authorization:"Basic aW5zaWdodHM6MTIz",contentType:"application/json"}})},onError:({ graphQLErrors, networkError })=>{if (graphQLErrors) {console.log("graphQLErrors");// 失败错误信息打印}if (networkError) {console.log("networkError");}},clientState:{},
})

因为网速问题,我就暂时的探索到这儿。
前几天的网络出现了问题,然后发现我前端作为学习的这个https://countries.trevorblades.com/地址,出现了变化,也就是UI界面人家可能重新采用了一个。
在这里插入图片描述
变成了这种效果,可能是我网络这边有问题,请求的时候有点延迟。
然后好像对部分请求类型做了补充和优化。


前面学习了graphql的概念,graphql的部分语法,以及基础查询,带参数的查询,拦截器用法,错误处理。接下来深入学习一下,上传json字符串,和如何去上传和请求流式文件并转化。


目前为止,我们只讨论过简单的字符串等标量值作为参数传递给字段,但是你也能很容易地传递复杂对象。这在变更(mutation)中特别有用,因为有时候你需要传递一整个对象作为新建对象。在 GraphQL schema language 中,输入对象看上去和常规对象一模一样,除了关键字是 input 而不是 type。


为了方便演示学习,我又找了一个graphql的接口
https://hasura.io/learn/graphql/graphiql
在这里插入图片描述
这里的话,可以使用一些选项的配置,帮助我们快速直观的理解文档描述。查询这样的数据。
在这里插入图片描述

首先大体学习一哈:
这里有个特别好的地方就是有Authorization的认证,这时候就得按照人家的要求来写了。那就可以通过请求拦截器来加上这个认证即可。所以这里的两个错误处理就特别的好了。
在这里插入图片描述

所以就是和配置axios一样,先来配置好这个二次封装的(Graphql):

import ApolloClient from 'apollo-boost';
import store from '@/store';const apolloClient = new ApolloClient({uri: 'https://hasura.io/learn/graphql',fetchOptions: {credentials: 'include',//是否包含凭证},request:(operation)=>{    operation.setContext({headers:{Authorization:"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FWTJSVGM1UlVOR05qSXhSRUV5TURJNFFUWXdNekZETWtReU1EQXdSVUV4UVVRM05EazFNQSJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWRlZmF1bHQtcm9sZSI6InVzZXIiLCJ4LWhhc3VyYS1hbGxvd2VkLXJvbGVzIjpbInVzZXIiXSwieC1oYXN1cmEtdXNlci1pZCI6ImF1dGgwfDY0MGZkYTc1MjE5MjBmOGQzNDJiODA0YiJ9LCJuaWNrbmFtZSI6IjIzNjgyMzU1NDQiLCJuYW1lIjoiMjM2ODIzNTU0NEBxcS5jb20iLCJwaWN0dXJlIjoiaHR0cHM6Ly9zLmdyYXZhdGFyLmNvbS9hdmF0YXIvODA2YmJhMzNjYjUxNzg2MmE2M2UwMDAwM2Q4ZmIwZTc_cz00ODAmcj1wZyZkPWh0dHBzJTNBJTJGJTJGY2RuLmF1dGgwLmNvbSUyRmF2YXRhcnMlMkYyMy5wbmciLCJ1cGRhdGVkX2F0IjoiMjAyMy0wMy0yMVQwODozOTozNC43MTBaIiwiaXNzIjoiaHR0cHM6Ly9ncmFwaHFsLXR1dG9yaWFscy5hdXRoMC5jb20vIiwiYXVkIjoiUDM4cW5GbzFsRkFRSnJ6a3VuLS13RXpxbGpWTkdjV1ciLCJpYXQiOjE2NzkzODc5NzUsImV4cCI6MTY3OTQyMzk3NSwic3ViIjoiYXV0aDB8NjQwZmRhNzUyMTkyMGY4ZDM0MmI4MDRiIiwiYXRfaGFzaCI6IkpFZHZ0RFc1dnlhdnZ0TjNXZDliWXciLCJzaWQiOiJwT0l1Z2lWc1U1dTRNMGdMMHZmNWVZOTFnRi1Ma3hEQiIsIm5vbmNlIjoiQXFrSGRteURLaVFST3BZaWFmcTVlUXlLNW9pSH5KS3kifQ.A3LKFKBF0QFaNXPfUjr3ku8seevODVagp1hRkBN8SDN_m4zmvbNg1YOvZWwyQwHrRMZBadmM3WkQ4wkJBDO9YbWSrqh2XCeTNpRYMkcZ07_8gyUx77WKoXHSRoe3tZJjvBTgVleyJTHqYET-aI46pi7mamuZq7BuAHPZ-uKKBmErrhNGhari_X_Le9tNjJPfTGNuGovsXW3hK_TYiRC1eL5Ic_ekO0UDey9ph2qA05JJdJPwN2ZqFhwRQ3Cgdn0kIUPB_dIZFn2aD_PF78jdGGyUjFEES9xd-MbNfKpphB0lknUSTIcP0SyckVLmi0WW1CawAdHZCZke6KQs5QsKWw",contentType:"application/json"}})},onError:({ graphQLErrors, networkError })=>{if (graphQLErrors) {console.log("graphQLErrors:",graphQLErrors[0].message);}if (networkError) {console.log("networkError:",networkError);} },
})export default apolloClient;

在代码中使用这个接口。

import gql from 'graphql-tag'
import apolloClient from './graphql'export function one(){return apolloClient.query({query:gql`query{users(limit: 5) {nameid}}`})
}

在这里插入图片描述
咋们的第三波的探索就此展开。。。。。。

相关内容

热门资讯

还得加钱!利物浦报价维尔茨再遭... 北京时间6月2日消息,据德国媒体报道称,利物浦求购维尔茨的第二份报价遭到勒沃库森拒绝,药厂坚持要价1...
罗马诺:欧冠决赛的0-5惨败,... 直播吧6月2日讯 欧冠决赛,国际米兰0-5完败巴黎圣日耳曼,无缘冠军。据转会名记罗马诺透露,本场失利...
刚刚!港股下挫,A50跌超2%... 每经编辑|何小桃 受全球关税负面信息的打击,6月2日上午,亚太股市几乎全线下跌。 截至发稿,恒生...
原创 权... 作者:吕东平 摘要 在全球化与文明对话日益深入的今天,某些国家仍呈现出权力结构对法治原则的系统性侵...
分手后男子起诉按现金价折算金饰... 近日,宁夏同心县人民法院公布一起案例,2024年9月,宝某与周某经人介绍相识并按照习俗结婚,宝某依习...
连连数字盘中一度涨超78% 香... 连连数字(02598)盘中一度涨超78% ,高见18港元,股价创新高,截至发稿,股价上涨65.47%...
官员饮酒聚餐致死,安徽:绝不姑... 据《安徽日报》报道,6月1日晚,安徽省委常委会召开会议,传达学习中央层面深入贯彻中央八项规定精神学习...
3名干部被查,均已退休,年龄最... 原江西省工业和信息化委员会党组成员、副主任杨人平被查 据江西省纪委监委5月30日消息:原江西省工业和...
曼联门神奥纳纳爆转会!沙特土豪... 各位球迷朋友们,转会市场这潭水啊,是越来越深,越来越浑!今儿个咱聊聊曼联的门神——安德烈·奥纳纳。这...
女子搬新家遭邻居多次持刀砍门,... 极目新闻记者 王柳钦 近日,有辽宁大连的网友发视频称,疑似患精神疾病的邻居多次持刀上门,用刀砍其家门...