快速入门apollo使用教程
Admin 2023-04-10 群英技术资讯 1261 次浏览
这篇文章主要介绍“快速入门apollo使用教程”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“快速入门apollo使用教程”文章能帮助大家解决问题。目前为止,前端获取动态数据,都是前端与服务端进行交互获取数据,但是如果只是获取简单的一些配置属性,并没有其它的接口需要服务端提供,此时在搭建一个服务器就是资源的浪费了,希望可以直接从 apollo的配置服务器中获取,无需额外的服务端接口
通过前端自身直接获取到apollo的配置目前看到官方支持的客户端是没有vue的,所以以下是前端获取到apollo数据的过程
"vue": "^3.2.41", "@vue/cli-service": "~5.0.8",
"@vue/apollo-composable": "^4.0.0-beta.2", "@vue/apollo-option": "^4.0.0-beta.2", "graphql": "^16.6.0", "graphql-tag": "^2.12.6",
main.ts 配置建立链接
const httpLink = createHttpLink({
// You should use an absolute URL here
uri: apiApollo,
// credentials: 'include'
})
// Cache implementation
const cache = new InMemoryCache()
// Create the apollo client
const apolloClient = new ApolloClient({
link: httpLink,
cache,
})
const apolloProvider = createApolloProvider({
defaultClient: apolloClient,
})
const app = createApp(App, {
setup() {
provide(DefaultApolloClient, apolloClient)
}
});
获取数据
import { useQuery } from "@vue/apollo-composable";
import gql from "graphql-tag";
export default defineComponent({
name:"page-info",
setup(){
const { result, error, onResult, onError } = useQuery(gql`
query getPartners {
partners {
label,
value
}
}
`)
onResult(queryResult => {
console.log("queryResultqueryResult", queryResult.data)
console.log(queryResult.loading)
console.log(queryResult.networkStatus)
})
onError(error => {
console.log("queryResultqueryResult error", error.graphQLErrors)
console.log(error.networkError)
})
}
})
Use the @apollo/client/core import path otherwise you will also import React.
一定注意引入的位置是import { ApolloClient, createHttpLink, InMemoryCache } from "@apollo/client/core";而不是@apollo/client,否则就会报引入react错误
Uncaught (in promise) Error: Apollo client with id default not found. Use provideApolloClient() if you are outside of a component setup
该方式尝试多种方式都是提示该错误,并且vue3.x 该方式暂时还没有比较完整的文档说明,所以该方式等以后更成熟之后在考虑
根据目前的环境使用客户端的方式获取Apollo配置失败,发现目前官方推荐的还有一种方式便是通过接口获取
接口URL格式: {config_server_url}/configs/{appId}/{clusterName}/{namespaceName}?releaseKey={releaseKey}&ip={clientIp}
Method方式: GET
| 参数名 | 是否必须 | 参数值 | 备注 |
|---|---|---|---|
| config_server_url | 是 | Apollo配置服务的地址,非UI界面的地址 | |
| appId | 是 | 应用的appId | |
| clusterName | 是 | 集群名 一般情况下传入 default 即可。 | 如果希望配置按集群划分,可以参考集群独立配置说明做相关配置,然后在这里填入对应的集群名。 |
| namespaceName | 是 | Namespace的名字,如果没有新建过Namespace的话,传入application即可。 | 如果创建了Namespace,并且需要使用该Namespace的配置,则传入对应的Namespace名字。需要注意的是对于properties类型的namespace,只需要传入namespace的名字即可,如application。对于其它类型的namespace,需要传入namespace的名字加上后缀名,如datasources.json |
| releaseKey | 否 | 上一次的releaseKey | 将上一次返回对象中的releaseKey传入即可,用来给服务端比较版本,如果版本比下来没有变化,则服务端直接返回304以节省流量和运算 |
| ip | 否 | 应用部署的机器ip | 这个参数是可选的,用来实现灰度发布。 |
config_server_url:不是配置的UI界面的DNS,是服务器的DNS,并且两者没有关联,所以如果直接拿界面的DNS获取是获取不到数据的
https://apollo-config.uat.XXXX/configs/项目ID/项目空间/application
返回数据:
{
"appId": "xxxx",
"cluster": "default",
"namespaceName": "application",
"configurations": {//application 所有配置的值
"title": "Apollo set value"
},
"releaseKey": "2023021"
}
axios({
method:'get',
url:'/configs/{appId}/{clusterName}/{namespaceName}'
}).then((res:any)=>{
console.log(res)
})
交互访问也会返回相同的数据
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
如何用JS写一个风车效果,代码是什么?本文实例为大家分享了JS实现玩转风车的具体代码,供大家参考,具体内容如下
网上有很多关于深拷贝的文章,但是质量良莠不齐,有很多都考虑得不周到,写的方法比较简陋,难以令人满意。本文旨在完成一个完美的深拷贝,大家看了如果有问题,欢迎一起补充完善。
Vue.nextTick是Vue官方给我们提供的一个API(方法),作用是在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM
最在做项目过程中,大量的使用了Object.assign方法,发现这个还是挺好使用的,现在总结下Object.assign的基本使用。一、基本语法Object.assign(target, ...sources)二、基本概念O
本文给大家分享用纯JavaScript+CSS怎样做页面滚动的动画的内容,让元素根据滚动位置实现动画效果比较流行,除了本文的方法也可以用第第三方插件或库来实现,废话不多说,下面直接看代码。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008