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

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

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

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

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

概述

  • 一種用于 API 的查詢語言

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

  • 請求你所要的數據

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

  • 獲取多個資源

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

  • 描述所有的可能

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

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

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

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

接下來將以一個完整的示例演示GraphQL的使用。qXn28資訊網——每日最新資訊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界面供我們快速查詢測試使用qXn28資訊網——每日最新資訊28at.com

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

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

實體定義

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

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

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

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

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

訪問測試

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

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

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

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


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

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久xxxx| 99视频精品免费观看| 国产精品毛片va一区二区三区 | 亚洲精品影视| 在线视频你懂得一区| 欧美一区二区黄| 欧美 日韩 国产在线| 欧美性做爰猛烈叫床潮| 国产主播一区| 一区二区三区av| 久久www成人_看片免费不卡| 欧美阿v一级看视频| 欧美日韩一区二区国产| 国精品一区二区三区| 亚洲精品一二| 国产午夜精品全部视频播放| 黄色成人在线观看| 99精品热6080yy久久| 久久成人免费日本黄色| 欧美日韩第一区| 狠狠色噜噜狠狠色综合久 | 美日韩免费视频| 欧美性感一类影片在线播放 | 99人久久精品视频最新地址| 久久国产视频网站| 欧美日韩国产欧| 国内精品视频一区| 亚洲网站在线| 欧美1区2区| 国产亚洲亚洲| 国产精品99久久99久久久二8| 久久久免费av| 国产精品久久久久久久久动漫| 在线看一区二区| 欧美亚洲三区| 欧美视频网址| 91久久久久久久久久久久久| 久久国产一区| 国产精品网站在线观看| 日韩视频中文| 久久夜色精品国产欧美乱极品| 国产精品家教| 日韩亚洲一区在线播放| 另类成人小视频在线| 国产亚洲激情在线| 亚洲欧美日本在线| 欧美色欧美亚洲另类七区| 亚洲国产欧洲综合997久久| 久久精品官网| 国产精品一二三| 国产精品99久久久久久白浆小说| 欧美福利网址| 一区二区欧美日韩视频| 国产精品一区在线播放| 亚洲人在线视频| 久久福利一区| 国产精品色在线| 日韩亚洲精品视频| 免费久久久一本精品久久区| 国内精品一区二区| 午夜欧美精品| 国产精品毛片在线| 欧美性猛交一区二区三区精品| 红桃视频成人| 欧美一级一区| 国产精品欧美日韩| 亚洲一区自拍| 国产精品video| 亚洲精品久久嫩草网站秘色| 久久久久一区二区三区四区| 国产日韩欧美夫妻视频在线观看| 亚洲一级网站| 国产精品久久久久久久久免费桃花| 日韩图片一区| 欧美人与性动交cc0o| 亚洲片在线资源| 欧美福利网址| 亚洲精品社区| 欧美人与禽猛交乱配视频| 亚洲看片网站| 欧美极品影院| 亚洲精品一二三| 牛人盗摄一区二区三区视频| 亚洲动漫精品| 欧美国产日韩视频| 亚洲精品一二三区| 欧美欧美全黄| 一区二区国产在线观看| 欧美视频在线观看免费网址| 亚洲视频久久| 国产精品入口麻豆原神| 午夜精品久久| 国内揄拍国内精品少妇国语| 久久久五月天| 91久久精品国产91久久| 欧美精品亚洲精品| 一区二区三区免费网站| 国产精品欧美在线| 欧美一区二区视频在线观看| 国内精品久久久| 久久女同精品一区二区| 亚洲第一精品在线| 欧美激情视频一区二区三区免费| 亚洲国产一区在线| 欧美日韩视频一区二区| 亚洲综合视频一区| 国产手机视频一区二区| 久久久av网站| 91久久国产综合久久| 欧美日韩亚洲一区二区三区四区| 中文网丁香综合网| 国产美女精品| 久久午夜影视| 99热免费精品在线观看| 国产精品亚洲第一区在线暖暖韩国 | 欧美视频一区二| 欧美一区二区三区日韩| 亚洲成人在线网| 欧美日韩亚洲激情| 小黄鸭精品密入口导航| 一区视频在线播放| 欧美日本成人| 欧美一级视频| 亚洲国产三级网| 国产精品都在这里| 久久久久欧美精品| 一区二区欧美日韩| 韩国女主播一区| 欧美日韩国内自拍| 久久精品国产精品亚洲综合| 亚洲精品一区在线观看香蕉| 国产日韩欧美一二三区| 欧美激情第二页| 欧美一区中文字幕| 日韩午夜在线观看视频| 国产午夜精品在线观看| 欧美日本国产视频| 久久久亚洲国产美女国产盗摄| 一本久道久久久| 极品裸体白嫩激情啪啪国产精品| 欧美日韩一区二区在线| 久热精品视频| 亚洲欧美精品一区| 亚洲精品社区| 狠狠狠色丁香婷婷综合久久五月| 欧美日韩一区综合| 蜜桃av噜噜一区| 欧美在线视频观看| 在线综合+亚洲+欧美中文字幕| 影音欧美亚洲| 国产麻豆精品视频| 欧美日韩中文字幕日韩欧美| 久久综合网色—综合色88| 亚洲伊人色欲综合网| 亚洲人成网站色ww在线| 国产综合在线看| 国产精品人成在线观看免费 | 久热这里只精品99re8久| 亚洲在线中文字幕| 亚洲人午夜精品免费| 国产综合色精品一区二区三区 | 亚洲激情在线观看| 国产私拍一区| 欧美视频观看一区| 欧美电影电视剧在线观看| 欧美一区二区三区免费视| 一区二区三区成人| 亚洲日本激情| 18成人免费观看视频| 国产日韩欧美电影在线观看| 欧美日韩在线视频一区二区| 欧美国产日韩xxxxx| 麻豆久久久9性大片| 久久久国产精彩视频美女艺术照福利| 亚洲综合成人在线| 日韩香蕉视频| 91久久久一线二线三线品牌| 激情综合色丁香一区二区| 国产日产欧美精品| 国产精品久久久久久久久久直播| 欧美久久久久免费| 欧美成人午夜激情在线| 久久在线91| 久久一综合视频| 久久久久国产一区二区三区| 久久9热精品视频| 香蕉尹人综合在线观看| 亚洲女性裸体视频| 亚洲一区二区三区视频播放| 一区二区高清视频| 亚洲手机视频| 中文网丁香综合网| a91a精品视频在线观看| 日韩午夜在线视频| 99亚洲伊人久久精品影院红桃| 亚洲精品少妇30p| 亚洲精品日韩综合观看成人91| 亚洲激情自拍| 亚洲精品一区二区三区福利| 亚洲精品美女91| 亚洲精品久久久久| 日韩午夜在线观看视频| 国产亚洲精品久久久久久| 欧美伦理在线观看|