摘要:每個接口做多帶帶的開發(fā)卻又古老而不合時宜。所以的出現(xiàn)是為了更好的降低數(shù)據(jù)之間的網(wǎng)狀關(guān)系帶來的開發(fā)復(fù)雜度。
GraphQL 什么是GraphQL
Facebook開源的一個數(shù)據(jù)查詢語言
1、GraphQL是一門語言,有自己的語法,這點(diǎn)和其他編程語言是類似的
2、GraphQL是一個runtime,可以認(rèn)為它是一個運(yùn)行在服務(wù)器上的可以理解和響應(yīng)使用GraphQL語言的請求應(yīng)用程序,類似一個服務(wù)端的GraphQL翻譯
RESTful Api的弊端隨著應(yīng)用的擴(kuò)展,被逐漸放大,比如接口調(diào)用次數(shù)增多,耗時太長。每個接口做多帶帶的開發(fā)卻又古老而不合時宜。所以GraphQL的出現(xiàn)是為了更好的降低數(shù)據(jù)之間的網(wǎng)狀關(guān)系帶來的開發(fā)復(fù)雜度。
如何使用一個簡單的GraphQL的語法案例如下,就是一個輸入格式如下(不是JSON)
{ user(id: 42) { firstName lastName email } }
會被轉(zhuǎn)換成如下輸出
{ "data": { "user": { "firstName": "John", "lastName": "Doe", "email": "john@example.com" } } }
這可以看做是一次請求響應(yīng)的過程
一個查詢定義如下
const queryType = new GraphQLObjectType({ name: "RootQuery", fields: { hello: { type: GraphQLString, resolve: () => "world" } } }); const mySchema = new GraphQLSchema({ query: queryType }); const inputQuery = `{ hello }` graphql(mySchema, inputQuery).then(result => { console.log("Server Answer :", result.data); });
打印log如下
Server Answer : { hello: "world" }
GraphQL內(nèi)置一些基礎(chǔ)數(shù)據(jù)類型,然后可以自定義復(fù)雜數(shù)據(jù)類型,數(shù)據(jù)類型之間可以互相嵌套和引用,這就可以組成可配置的數(shù)據(jù)結(jié)構(gòu)
GraphQL是一門強(qiáng)類型的語言,每個字段都必須要要有嚴(yán)格的格式約束
這門語言有很多種編程語言的實(shí)現(xiàn),graphql.js就是其中一種
對于前端而言,最簡單的使用過程就是拼接上文的hello這樣子的Query,來查詢數(shù)據(jù)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/82640.html
摘要:不過今天我希望能夠更進(jìn)一步,不僅僅再抱怨現(xiàn)狀,而是從我個人的角度來給出一個逐步深入學(xué)習(xí)生態(tài)圈的方案。最后,我還是想提到下對于的好的學(xué)習(xí)方法就是回顧參照各種各樣的代碼庫,學(xué)習(xí)人家的用法與實(shí)踐。 本文翻譯自A-Study-Plan-To-Cure-JavaScript-Fatigue。筆者看到里面的幾張配圖著實(shí)漂亮,順手翻譯了一波。本文從屬于筆者的Web Frontend Introduc...
摘要:用和創(chuàng)建一個靜態(tài)博客翻譯和自己探索過程中的經(jīng)驗(yàn)總結(jié)原文參閱或本篇主要是對其精華內(nèi)容進(jìn)行翻譯以及實(shí)操過程中遇到的問題解決和探索一些具體的操作步驟和細(xì)節(jié)我將忽略結(jié)合原文一起閱讀效果更佳注本文操作環(huán)境是介紹這是一個包含很多靜態(tài)內(nèi)容頁面的站點(diǎn)從技術(shù) 用Gatsby和Strapi創(chuàng)建一個靜態(tài)博客(翻譯和自己探索過程中的經(jīng)驗(yàn)總結(jié)) 原文參閱: Building a static blog usin...
摘要:初始化項(xiàng)目使用初始化項(xiàng)目安裝項(xiàng)目結(jié)構(gòu)如下接口所有接口對封裝接下來對進(jìn)行封裝,加上中間件實(shí)現(xiàn)類似于攔截器的效果。 Graphql嘗鮮 在只學(xué)習(xí)graphql client端知識的過程中,我們常常需要一個graphql ide來提示graphql語法,以及實(shí)現(xiàn)graphql的server端來進(jìn)行練手。graphql社區(qū)提供了graphiql讓我們使用 graphiql (npm):一個交互...
摘要:另外,團(tuán)隊(duì)更加友好的類型檢查極大方便了后端的開發(fā)。初步的性能測試無讀寫操作的接口響應(yīng)時間在本地,讀寫操作接口響應(yīng)時間在,已經(jīng)遠(yuǎn)低于之前版本的。并發(fā)量預(yù)估也會有不小的提升。 2.0-alpha1 預(yù)覽版本 這個版本主要用于預(yù)覽后臺,一些接口還沒對接。 Adonis.js 到 Nest.js AonisJS 是一個 Node.js 版的 Laravel ,起初是打算用 AdonisJS,...
閱讀 3318·2023-04-26 02:27
閱讀 2198·2021-11-22 14:44
閱讀 4194·2021-10-22 09:54
閱讀 3247·2021-10-14 09:43
閱讀 808·2021-09-23 11:53
閱讀 13131·2021-09-22 15:33
閱讀 2775·2019-08-30 15:54
閱讀 2777·2019-08-30 14:04