成人精品水蜜桃_成人在线丰满少妇av_91亚洲国产高清_欧美日韩免费区域视频在线观看

首頁 保險 > 正文

今日視點:GraphQL全解析,你學(xué)會了嗎?

您可能已經(jīng)看過很多關(guān)于GraphQL的內(nèi)容,在這個過程中是不是有時會感到困惑和不知所措。本文讓我嘗試用更簡單易懂的語言回答關(guān)于GraphQL的三個主要問題:GraphQL是什么,如何工作,何時使用?希望對您更好地理解GraphQL有所裨益。

1 什么是GraphQL

“Graph”指的是數(shù)據(jù)以類似圖形的結(jié)構(gòu)表示和連接。在GraphQL中,數(shù)據(jù)表示為具有節(jié)點和邊的圖形,允許不同數(shù)據(jù)實體之間的靈活關(guān)系。

“QL”代表“查詢語言”,因為GraphQL提供了一種精確和可控的查詢或請求數(shù)據(jù)的語言。


(資料圖)

示例:書和作者的關(guān)系可以用圖來表示,可以很容易地使用GraphQL進(jìn)行查詢:

深入研究GraphQL,我們發(fā)現(xiàn)它是:

類型系統(tǒng):定義數(shù)據(jù)的外觀以及事物之間的關(guān)系。類型系統(tǒng)定義各種數(shù)據(jù)類型和架構(gòu),這是客戶端和服務(wù)器之間的合同。查詢語言:查詢數(shù)據(jù)的語言,它知道從哪里獲取數(shù)據(jù)并包含驗證或執(zhí)行查詢的規(guī)則。

簡而言之,GraphQL能讓客戶端精確指定它需要從API獲取的數(shù)據(jù)。

Facebook在2012年開始開發(fā)GraphQL,并于2015年將其發(fā)布為開源。2018年,GraphQL被移至新成立的GraphQL基金會,由非營利組織Linux基金會托管。

GraphQL支持讀取、寫入(變異)和訂閱數(shù)據(jù)的更改,讓我們可以實時更新。

2 GraphQL如何工作

GraphQL有兩個部分:請求數(shù)據(jù)的客戶端和提供數(shù)據(jù)的服務(wù)器,以下是解釋其工作原理的步驟:

i)定義模式:服務(wù)器定義GraphQL模式,這類似于描述可用數(shù)據(jù)和操作的藍(lán)圖。例如,如果我們有一個帶有字段(id、name和pageCount)的Book實體,并且有一個查詢是按id查詢書籍,則其模式將如下所示:

type Query {    bookById(id: ID): Book}type Book {    id: ID    name: String    pageCount: Int}

ii)發(fā)送查詢:客戶端向服務(wù)器發(fā)送GraphQL查詢,指定所需數(shù)據(jù)和所需結(jié)構(gòu)。

query bookDetails {  bookById(id: "book-1") {    id    name    pageCount  }}

iii)解決查詢:服務(wù)器的GraphQL引擎接收查詢并開始解決查詢。它根據(jù)查詢確定需要哪些數(shù)據(jù),以及應(yīng)執(zhí)行哪些解析器函數(shù)來獲取該數(shù)據(jù)。

iv)獲取數(shù)據(jù):解析器函數(shù)根據(jù)查詢要求從各種數(shù)據(jù)源(例如數(shù)據(jù)庫、API)檢索數(shù)據(jù)。

v)組裝響應(yīng):GraphQL引擎收集檢索到的數(shù)據(jù),并按客戶端請求的格式組裝響應(yīng)。它僅包括查詢中請求的確切數(shù)據(jù)字段,減少不必要的數(shù)據(jù)傳輸。

vi)返回響應(yīng):服務(wù)器將響應(yīng)發(fā)送回客戶端,提供查詢中精確請求的數(shù)據(jù)。

3 何時可以使用GraphQL

GraphQL適用于處理復(fù)雜或經(jīng)常變化的數(shù)據(jù)需求,因為它可以將數(shù)據(jù)請求的控制權(quán)交給客戶端,讓客戶端在任何時間請求任何數(shù)據(jù)。這讓在每次API變更迭代或從這些API請求的數(shù)據(jù)發(fā)生變化時更容易進(jìn)行更新。與REST API相比,GraphQL允許客戶端精確指定所需數(shù)據(jù)的結(jié)構(gòu)和字段,從而避免了獲取過度或獲取不足的問題。因此,GraphQL可以提高數(shù)據(jù)傳輸?shù)木_性和效率,使應(yīng)用程序更加靈活和可擴展。

如果應(yīng)用程序需要從多個來源聚合數(shù)據(jù),GraphQL可以幫助把這些來源統(tǒng)一到單個API中。它提供了一個抽象層,可從各種服務(wù)中獲取和組合數(shù)據(jù),使數(shù)據(jù)的獲取和整合更加簡單和高效。

當(dāng)應(yīng)用程序需要實時更新和訂閱時,GraphQL提供內(nèi)置功能。這些功能允許客戶端訂閱特定數(shù)據(jù)的變化,并在數(shù)據(jù)更改時實時推送通知,從而提高應(yīng)用程序的實時性和響應(yīng)性。

總之,如果您需要更好地控制和定制API響應(yīng),并希望有效地處理復(fù)雜或不斷變化的數(shù)據(jù)需求,那么GraphQL是一個非常有用的工具。

4 使用Spring實現(xiàn)GraphQL

隨著spring-boot-starter-graphql框架的到來,使用Spring實現(xiàn)GraphQL變得更加容易。

在Spring項目中集成GraphQL的步驟如下:

i)向項目添加gradle/maven graphql starter依賴:

//Gradleimplementation "org.springframework.boot:spring-boot-starter-graphql"http://Maven    org.springframework.boot    spring-boot-starter-graphql

ii)創(chuàng)建一個目錄src/main/resources/graphql,并在該目錄下添加一個名為schema.graphqls的文件,包含以下內(nèi)容:

type Query {    bookById(id: ID): Book}type Book {    id: ID    name: String    pageCount: Int}

在這里,我們創(chuàng)建了一個Book的schema。每個schema都有一個頂級查詢類型,這里的schema定義了一個名為bookById的查詢,用于返回特定書籍的詳細(xì)信息。

iii)GraphQL服務(wù)器中的每個復(fù)雜類型都由Java bean表示,并且Java bean中的字段將直接映射到GraphQL響應(yīng)中的字段,其名稱基于字段名稱。

public record Book (String id, String name, int pageCount) {    private static List books = Arrays.asList(            new Book("book-1", "Effective Java", 416),            new Book("book-2", "Hitchhiker"s Guide to the Galaxy", 208),            new Book("book-3", "Down Under", 436)    );    public static Book getById(String id) {        return books.stream()    .filter(book -> book.id().equals(id))    .findFirst()    .orElse(null);    }}

iv) Spring的GraphQL提供了基于注解的編程模型。通過控制器注釋方法,我們可以聲明如何獲取特定GraphQL字段的數(shù)據(jù)。現(xiàn)在讓我們添加BookController.java

@Controllerpublic class BookController {    @QueryMapping    public Book bookById(@Argument String id) {        return Book.getById(id);    }}

通過定義一個名為bookById的方法并用@QuerMapping注釋,此控制器聲明了如何獲取Query類型下定義的Book。查詢字段從方法名稱確定,但也可以在注釋本身上聲明。

v) Spring的GraphQL還為我們提供了一個用于編寫和執(zhí)行查詢的可視界面,名為GraphiQL。通過將以下配置添加到application.yaml文件中啟用GraphiQL:

spring  graphql    graphiql      enabled: true

啟動Spring應(yīng)用程序并導(dǎo)航到http://localhost:8080/graphiql.

vi)在窗口頂部鍵入查詢并單擊播放按鈕。

query bookDetails {  bookById(id: "book-1") {    id    name    pageCount  }}

您將看到以下響應(yīng):

這樣您已經(jīng)構(gòu)建了一個GraphQL服務(wù)并成功查詢了數(shù)據(jù)!您的數(shù)據(jù)之旅從此開始!快動手試試吧~

關(guān)鍵詞:

最近更新

關(guān)于本站 管理團(tuán)隊 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2023 創(chuàng)投網(wǎng) - m.7778890.com All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖I(lǐng)CP備2022009963號-3

成人精品水蜜桃_成人在线丰满少妇av_91亚洲国产高清_欧美日韩免费区域视频在线观看
久草在线在线精品观看| 色综合中文字幕国产 | 欧美日韩中文一区| 久久综合伊人| 一本一道综合狠狠老| 模特精品在线| 老色鬼久久亚洲一区二区| 久久精彩视频| 欧美影院一区二区| 精品婷婷伊人一区三区三| 精品视频在线免费看| 欧美日韩国产影片| 精品日韩在线观看| 久久免费看少妇高潮| 欧美国产一区二区| 亚洲日本免费电影| 五月天激情综合网| 另类人妖一区二区av| 国产一区二区导航在线播放| 国产成人亚洲综合a∨婷婷| 成人av电影在线网| 亚洲欧美在线网| 日韩亚洲欧美精品| 91激情在线视频| 欧美乱妇23p| 精品剧情v国产在线观看在线| 2020日本不卡一区二区视频| 国产精品久久久久永久免费观看| 亚洲精品少妇30p| 青娱乐精品在线视频| 国产成人av影院| 欧美日韩99| 久久精品123| 日韩欧美一区在线| 国产精品久久久久毛片软件| 婷婷综合久久一区二区三区| 国产一区中文字幕| 亚洲午夜高清视频| 欧美私模裸体表演在线观看| 欧美va日韩va| 亚洲综合成人在线| 91福利国产成人精品照片| 91麻豆精品国产无毒不卡在线观看 | 国产.欧美.日韩| 99成人在线| 4hu四虎永久在线影院成人| 国产女人aaa级久久久级 | 久久99精品久久久| 欧美午夜不卡影院在线观看完整版免费| 国产日韩欧美综合精品| 欧美另类久久久品| 亚洲精品网站在线观看| 国产成人激情av| 先锋亚洲精品| 国产午夜亚洲精品羞羞网站| 日韩高清国产一区在线| 欧美一区1区三区3区公司| 美女图片一区二区| 日本一区二区三区电影| 久久www免费人成看片高清| 国内不卡一区二区三区| 91精品国产综合久久久蜜臀图片| 亚洲综合色婷婷| 欧美成人高清| 日韩一区二区三区在线观看| 亚洲一区二区三区四区在线观看| 97精品久久久午夜一区二区三区| 色视频欧美一区二区三区| 国产精品久久福利| 成人高清伦理免费影院在线观看| 在线亚洲+欧美+日本专区| 亚洲欧洲美洲综合色网| 91在线观看免费视频| 欧美日高清视频| 日韩av不卡在线观看| 亚洲精美视频| 国产精品理伦片| 99精品一区二区| 日韩视频免费直播| 国内精品嫩模私拍在线| 色婷婷综合久色| 亚洲成人免费视| 国产成人精品免费看| 日本高清不卡在线观看| 一区二区三区美女视频| 国产精品a级| 欧美激情一区二区三区| 99久久夜色精品国产网站| 91麻豆精品国产91久久久久久 | 日韩午夜视频在线观看| 国产精品伦理一区二区| 欧美99在线视频观看| 精品日韩在线一区| 成人免费视频国产在线观看| 日韩视频一区二区| 成人黄色片在线观看| 欧美一区二区三区视频| 国产91富婆露脸刺激对白| 7777精品伊人久久久大香线蕉| 美女视频黄频大全不卡视频在线播放| 性色一区二区三区| 亚洲图片欧美激情| 最近看过的日韩成人| 亚洲欧美另类图片小说| 一区二区av| 亚洲观看高清完整版在线观看| 国产精品久久九九| 水野朝阳av一区二区三区| 色婷婷综合五月| 国产尤物一区二区| 欧美大片在线观看| 欧美久久久久| 亚洲主播在线观看| 色偷偷88欧美精品久久久| 寂寞少妇一区二区三区| 欧美一区二区三区公司| av亚洲产国偷v产偷v自拍| 国产日韩亚洲欧美综合| 激情av一区| 日本不卡123| 欧美日韩精品电影| 91在线云播放| 亚洲蜜臀av乱码久久精品 | 亚洲天堂久久久久久久| 亚洲女同同性videoxma| 日本亚洲三级在线| 精品国产乱码久久久久久久| 欧美国产三区| 性欧美大战久久久久久久久| 欧美日韩精品电影| 欧美va天堂| 午夜国产精品一区| 4438x亚洲最大成人网| 色综合天天综合狠狠| 一区二区三区中文免费| 欧美日韩亚洲综合在线| 91蜜桃在线观看| 午夜免费久久看| 精品sm捆绑视频| 国产午夜精品一区二区三区欧美| 精品一区精品二区高清| 国产精品欧美一级免费| 91精彩视频在线观看| 欧美一区在线看| 免费在线成人网| 国产欧美视频一区二区三区| 蜜桃久久av| 色综合天天综合狠狠| 舔着乳尖日韩一区| 久久男人中文字幕资源站| 一区二区三区欧美成人| 国产乱码精品一区二区三| 亚洲日本丝袜连裤袜办公室| 在线播放/欧美激情| 亚洲激情一区二区| 国产成人综合在线| 午夜视频在线观看一区二区三区| 久久亚洲一区二区三区四区| 久久精品二区| 欧美日韩日本网| 国产精品综合二区| 亚洲激情六月丁香| 亚洲精品一区二区精华| 色诱亚洲精品久久久久久| 欧美日本精品| 国产成人精品1024| 另类专区欧美蜜桃臀第一页| 亚洲欧洲三级电影| 精品理论电影在线观看| 欧美午夜片在线观看| 日韩亚洲欧美精品| 97久久超碰国产精品| 国模大尺度一区二区三区| 亚洲一区二区不卡免费| 国产精品久久午夜| 26uuu成人网一区二区三区| 欧美视频三区在线播放| 国产精品夜夜夜一区二区三区尤| 91视频免费看| 国产成人夜色高潮福利影视| 麻豆91免费看| 五月天激情小说综合| 亚洲综合自拍偷拍| 亚洲免费在线看| 亚洲欧美在线aaa| 欧美国产日韩精品免费观看| 日韩欧美一级在线播放| 亚洲动漫第一页| 日韩美女久久久| 国产精品麻豆视频| 国产精品污网站| 久久精品人人做人人爽人人| 欧美一二区视频| 欧美精品三级在线观看| 欧美视频一区二区三区在线观看| 久久综合九九| 91久久线看在观草草青青 | 亚洲一区二区高清| 午夜伊人狠狠久久| 亚洲成人综合视频|