AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

Springboot整合GraphQL使你的API更易理解可讀性更強(qiáng)

來源: 責(zé)編: 時(shí)間:2023-08-09 23:03:53 284觀看
導(dǎo)讀環(huán)境:Springboot3.0.9概述一種用于 API 的查詢語言GraphQL 既是一種用于 API 的查詢語言也是一個(gè)滿足你數(shù)據(jù)查詢的運(yùn)行時(shí)。GraphQL 對你的 API 中的數(shù)據(jù)提供了一套易于理解的完整描述,使得客戶端能夠準(zhǔn)確地獲得它需要的

環(huán)境:Springboot3.0.9knf28資訊網(wǎng)——每日最新資訊28at.com

概述

  • 一種用于 API 的查詢語言

GraphQL 既是一種用于 API 的查詢語言也是一個(gè)滿足你數(shù)據(jù)查詢的運(yùn)行時(shí)。GraphQL 對你的 API 中的數(shù)據(jù)提供了一套易于理解的完整描述,使得客戶端能夠準(zhǔn)確地獲得它需要的數(shù)據(jù),而且沒有任何冗余,也讓 API 更容易地隨著時(shí)間推移而演進(jìn),還能用于構(gòu)建強(qiáng)大的開發(fā)者工具。knf28資訊網(wǎng)——每日最新資訊28at.com

  • 請求你所要的數(shù)據(jù)

向你的 API 發(fā)出一個(gè) GraphQL 請求就能準(zhǔn)確獲得你想要的數(shù)據(jù),不多不少。GraphQL 查詢總是返回可預(yù)測的結(jié)果。使用 GraphQL 的應(yīng)用可以工作得又快又穩(wěn),因?yàn)榭刂茢?shù)據(jù)的是應(yīng)用,而不是服務(wù)器。knf28資訊網(wǎng)——每日最新資訊28at.com

  • 獲取多個(gè)資源

GraphQL 查詢不僅能夠獲得資源的屬性,還能沿著資源間引用進(jìn)一步查詢。典型的 REST API 請求多個(gè)資源時(shí)得載入多個(gè) URL,而 GraphQL 可以通過一次請求就獲取你應(yīng)用所需的所有數(shù)據(jù)。這樣一來,即使是比較慢的移動網(wǎng)絡(luò)連接下,使用 GraphQL 的應(yīng)用也能表現(xiàn)得足夠迅速。knf28資訊網(wǎng)——每日最新資訊28at.com

  • 描述所有的可能

GraphQL API 基于類型和字段的方式進(jìn)行組織,而非入口端點(diǎn)。你可以通過一個(gè)單一入口端點(diǎn)得到你所有的數(shù)據(jù)能力。GraphQL 使用類型來保證應(yīng)用只請求可能的數(shù)據(jù),還提供了清晰的輔助性錯(cuò)誤信息。應(yīng)用可以使用類型,而避免編寫手動解析代碼。knf28資訊網(wǎng)——每日最新資訊28at.com

有關(guān)GraphQL的語法相關(guān)知識,請參考knf28資訊網(wǎng)——每日最新資訊28at.com

https://graphql.org/中文knf28資訊網(wǎng)——每日最新資訊28at.com

https://graphql.cn/knf28資訊網(wǎng)——每日最新資訊28at.com

接下來將以一個(gè)完整的示例演示GraphQL的使用。knf28資訊網(wǎng)——每日最新資訊28at.com

環(huán)境配置

  • 引入依賴
<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-graphql</artifactId></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>  <groupId>com.mysql</groupId>  <artifactId>mysql-connector-j</artifactId>  <scope>runtime</scope></dependency>
  • 配置文件
spring:  datasource:    driverClassName: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/testjpa?serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&useSSL=false    username: root    password: xxxxxx    type: com.zaxxer.hikari.HikariDataSource    hikari:      minimumIdle: 10      maximumPoolSize: 200      autoCommit: true      idleTimeout: 30000      poolName: MasterDatabookHikariCP      maxLifetime: 1800000      connectionTimeout: 30000      connectionTestQuery: SELECT 1  ---spring:  jpa:    generateDdl: false    hibernate:      ddlAuto: update    openInView: true    show-sql: true---spring:  graphql:    path: /graphql    graphiql:      enabled: true      path: /graphiql    cors:      allow-credentials: true      allowed-headers: '*'      allowed-methods: '*'    schema:      locations:      - classpath*:graphql/**/      file-extensions:      - .graphqls      - .gqls      printer:        enabled: true

注意:這里的
spring.graphql.graphql.enabled=true開啟后,將會提供一個(gè)UI界面供我們快速查詢測試使用knf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片knf28資訊網(wǎng)——每日最新資訊28at.com

做好以上配置后,接下來就是建立2張表t_book和t_author。knf28資訊網(wǎng)——每日最新資訊28at.com

實(shí)體定義

Bookknf28資訊網(wǎng)——每日最新資訊28at.com

@Entity@Table(name = "t_book")public class Book {  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  private Long id ;  private String name ;  private Integer pageCount ;  @Transient  private List<Author> author = new ArrayList<>();}

Authorknf28資訊網(wǎng)——每日最新資訊28at.com

@Entity@Table(name = "t_author")public class Author {    @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  private Long id ;  private String firstName ;  private String lastName ;  // Book表的主鍵  private Long bid ;}

Repository定義

BookRepositoryknf28資訊網(wǎng)——每日最新資訊28at.com

public interface BookRepository extends JpaRepository<Book, Long>, JpaSpecificationExecutor<Book> {}

AuthorRepositoryknf28資訊網(wǎng)——每日最新資訊28at.com

public interface AuthorRepository extends JpaRepository<Author, Long>, JpaSpecificationExecutor<Author> {  List<Author> findByBid(Long bid) ;  }

Service定義

@Servicepublic class BookService {    @Resource  private BookRepository bookRepository ;  @Resource  private AuthorRepository authorRepository ;    public Book queryBook(Long id) {    Book book = bookRepository.findById(id).orElse(null) ;    List<Author> authors = authorRepository.findByBid(id) ;    book.setAuthor(authors) ;    return book ;  }  }

以上是基本的數(shù)據(jù)庫操作,很容易理解。接下來就是定義GraphQL Schemaknf28資訊網(wǎng)——每日最新資訊28at.com

GraphQL Schema定義

schema {  query: BookQuery}type BookQuery {  bookById(id: ID): Book}type Book {  id: ID  name: String  pageCount: Int  author: [Author]}type Author {  id: ID  firstName: String  lastName: String}

有關(guān)graphql相關(guān)語法請參考上面提到的網(wǎng)址。接下來是定義訪問接口knf28資訊網(wǎng)——每日最新資訊28at.com

Controller接口

@Controllerpublic class BookController {  @Resource  private BookService bookService;  @Resource  private AuthorRepository authorRepository;  @SchemaMapping(typeName = "BookQuery", field = "bookById")  public Book bookById(@Argument Long id) {    return bookService.queryBook(id);  }}

訪問測試

只需訪問統(tǒng)一的入口即可:knf28資訊網(wǎng)——每日最新資訊28at.com

#該訪問路徑可以在配置文件中修改knf28資訊網(wǎng)——每日最新資訊28at.com

http://localhost:8080/graphqlknf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片knf28資訊網(wǎng)——每日最新資訊28at.com


knf28資訊網(wǎng)——每日最新資訊28at.com

這里是訪問的完整的信息,我們可以在請求的query中設(shè)置需要訪問的字段,如下:knf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片knf28資訊網(wǎng)——每日最新資訊28at.com

只訪問book信息knf28資訊網(wǎng)——每日最新資訊28at.com

只訪問部分字段信息只訪問部分字段信息knf28資訊網(wǎng)——每日最新資訊28at.com

你需要訪問那些字段,是完全由客戶端定義的。knf28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-5198-0.htmlSpringboot整合GraphQL使你的API更易理解可讀性更強(qiáng)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 三言兩語說透webpack對vue的編譯

下一篇: 電腦技巧:Ditto剪切板增強(qiáng)工具介紹(附下載)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 石頭自清潔掃拖機(jī)器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經(jīng)常能看到一個(gè)詞叫“縫合怪”,用來形容那些把好多功能或者外觀結(jié)合在一起的產(chǎn)品,通常這樣的詞是貶義詞,但如果真的是產(chǎn)品縫合的好、縫合的實(shí)用的話,那它就成了中性詞,今
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時(shí)要賣為79.9元,今日下單領(lǐng)取50元優(yōu)惠券,到手價(jià)為29.9元。產(chǎn)品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實(shí)現(xiàn)了一個(gè)流處理程序
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽(yù)為&ldquo;純欲天花板&rdquo;的女網(wǎng)紅井川里予,近期因?yàn)橐唤M哥特風(fēng)照片登上熱搜,引發(fā)了一場互聯(lián)網(wǎng)世界關(guān)于
  • 蘋果、三星、惠普等暫停向印度出口筆記本和平板電腦

    集微網(wǎng)消息,據(jù)彭博社報(bào)道,在8月3日印度突然禁止在沒有許可證的情況下向印度進(jìn)口電腦/平板及顯示器等產(chǎn)品后,蘋果、三星電子和惠普等大公司暫停向印度
  • Android 14發(fā)布:首批適配機(jī)型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發(fā)布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機(jī),同時(shí)發(fā)布了Androi
  • 電博會與軟博會實(shí)現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實(shí)現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟(jì)良性發(fā)展;又可以聚
  • Meta盲目擴(kuò)張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創(chuàng)意日前,Meta創(chuàng)始人兼CEO 馬克&middot;扎克伯發(fā)布公開信,宣布Meta計(jì)劃裁員超11000人,占其員工總數(shù)13%。他公開承認(rèn)了自己的預(yù)判失誤:&ldquo;不僅
Top