亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3.x中的apollo如何使用

發布時間:2023-02-23 16:02:24 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

今天小編給大家分享一下vue3.x中的apollo如何使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

通過客戶端獲取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",

獲取Apollo配置

相關代碼

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配置

根據目前的環境使用客戶端的方式獲取Apollo配置失敗,發現目前官方推薦的還有一種方式便是通過接口獲取

通過不帶緩存的Http接口從Apollo讀取配置

接口URL格式: {config_server_url}/configs/{appId}/{clusterName}/{namespaceName}?releaseKey={releaseKey}&ip={clientIp}

Method方式: GET

參數說明
參數名是否必須參數值備注
config_server_url
Apollo配置服務的地址,非UI界面的地址
appId應用的appId
clusterName集群名 一般情況下傳入 default 即可。如果希望配置按集群劃分,可以參考集群獨立配置說明做相關配置,然后在這里填入對應的集群名。
namespaceNameNamespace的名字,如果沒有新建過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)
})

交互訪問也會返回相同的數據

以上就是“vue3.x中的apollo如何使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高台县| 浙江省| 朔州市| 樟树市| 溆浦县| 宁国市| 仙游县| 肇东市| 大竹县| 南澳县| 鹤峰县| 乌苏市| 东乡县| 宁远县| 乌什县| 长乐市| 中方县| 武功县| 麦盖提县| 安庆市| 兴业县| 临桂县| 隆德县| 蒲城县| 平凉市| 云南省| 云阳县| 涪陵区| 乳山市| 正定县| 托里县| 黄冈市| 宝应县| 南木林县| 弋阳县| 多伦县| 若羌县| 定襄县| 霍城县| 江阴市| 攀枝花市|