日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Springboot整合GraphQL使你的API更易理解可讀性更強

來源: 責編: 時間:2023-08-09 23:03:53 326觀看
導讀環境:Springboot3.0.9概述一種用于 API 的查詢語言GraphQL 既是一種用于 API 的查詢語言也是一個滿足你數據查詢的運行時。GraphQL 對你的 API 中的數據提供了一套易于理解的完整描述,使得客戶端能夠準確地獲得它需要的

環境:Springboot3.0.9GY428資訊網——每日最新資訊28at.com

概述

  • 一種用于 API 的查詢語言

GraphQL 既是一種用于 API 的查詢語言也是一個滿足你數據查詢的運行時。GraphQL 對你的 API 中的數據提供了一套易于理解的完整描述,使得客戶端能夠準確地獲得它需要的數據,而且沒有任何冗余,也讓 API 更容易地隨著時間推移而演進,還能用于構建強大的開發者工具。GY428資訊網——每日最新資訊28at.com

  • 請求你所要的數據

向你的 API 發出一個 GraphQL 請求就能準確獲得你想要的數據,不多不少。GraphQL 查詢總是返回可預測的結果。使用 GraphQL 的應用可以工作得又快又穩,因為控制數據的是應用,而不是服務器。GY428資訊網——每日最新資訊28at.com

  • 獲取多個資源

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

  • 描述所有的可能

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

有關GraphQL的語法相關知識,請參考GY428資訊網——每日最新資訊28at.com

https://graphql.org/中文GY428資訊網——每日最新資訊28at.com

https://graphql.cn/GY428資訊網——每日最新資訊28at.com

接下來將以一個完整的示例演示GraphQL的使用。GY428資訊網——每日最新資訊28at.com

環境配置

  • 引入依賴
<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開啟后,將會提供一個UI界面供我們快速查詢測試使用GY428資訊網——每日最新資訊28at.com

圖片圖片GY428資訊網——每日最新資訊28at.com

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

實體定義

BookGY428資訊網——每日最新資訊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<>();}

AuthorGY428資訊網——每日最新資訊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定義

BookRepositoryGY428資訊網——每日最新資訊28at.com

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

AuthorRepositoryGY428資訊網——每日最新資訊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 ;  }  }

以上是基本的數據庫操作,很容易理解。接下來就是定義GraphQL SchemaGY428資訊網——每日最新資訊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}

有關graphql相關語法請參考上面提到的網址。接下來是定義訪問接口GY428資訊網——每日最新資訊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);  }}

訪問測試

只需訪問統一的入口即可:GY428資訊網——每日最新資訊28at.com

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

http://localhost:8080/graphqlGY428資訊網——每日最新資訊28at.com

圖片圖片GY428資訊網——每日最新資訊28at.com


GY428資訊網——每日最新資訊28at.com

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

圖片圖片GY428資訊網——每日最新資訊28at.com

只訪問book信息GY428資訊網——每日最新資訊28at.com

只訪問部分字段信息只訪問部分字段信息GY428資訊網——每日最新資訊28at.com

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

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

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

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • Java NIO內存映射文件:提高文件讀寫效率的優秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數據。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力?! RM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度?! RM軟件市場規模如今超過580
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
Top 主站蜘蛛池模板: 随州市| 通化市| 辽源市| 额敏县| 米泉市| 正宁县| 尚义县| 平安县| 黑水县| 兴业县| 柘荣县| 盐池县| 扶沟县| 道真| 宁都县| 宜兰县| 徐水县| 安岳县| 许昌市| 奎屯市| 吉隆县| 永川市| 东乡| 中西区| 阜阳市| 平湖市| 磐安县| 松江区| 东港市| 临漳县| 靖江市| 温州市| 馆陶县| 高阳县| 宜良县| 鹤壁市| 洪泽县| 三门县| 永德县| 通榆县| 勐海县|