日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java 通過API操作GraphQL

瀏覽:192日期:2022-08-13 11:21:38

GraphQL可以通過Java的API來實現數據的查詢,通過特定的SDL查詢語句,獲取特定的查詢數據。相當于后端作為提供數據源的'數據庫',前端根據定義的SDL語句查詢需要的數據,將查詢數據的控制權交給前端,提高后端接口的通用性和靈活性

引入依賴

<dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java</artifactId> <version>11.0</version></dependency>

需要配置第三方的maven倉庫才可以下載這個jar包,要不然從中央倉庫無法下載。

官方網站,在快速開始中有需要配置的倉庫www.graphql-java.com

Java中使用GraphQL的API

根據定義的簡單查詢語法通過Java的API查詢數據

無參數簡單查詢

通過定義的查詢格式,通過GraphQL對象實現查詢,需要先構建響應的數據對象和構建響應的數據

/** * 簡單展示 GraphQL的查詢,以及通過JavaAPI響應數據 */public class GraphQLSimpleDemo { public static void main(String[] args) {// 定義數據響應對象GraphQLObjectType userType = createGraphQLObjectType();// 根據定義的數據響應對象構建響應的數據GraphQLFieldDefinition userDefinition = createGraphQLFieldDefinition(userType);// 創建查詢響應GraphQLSchema graphQLSchema = createGraphQLSchema(userDefinition);GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build();// 查詢語句String graph1 = '{User{id, name}}';// 查詢多個字段String graph2 = '{User{id, name, age}}';// 執行查詢ExecutionResult execute = graphQL.execute(graph1);// 獲取結果System.out.println(execute.toSpecification());// 執行查詢ExecutionResult execute2 = graphQL.execute(graph2);// 獲取結果System.out.println(execute2.toSpecification()); } // 創建GraphQLSchema public static GraphQLSchema createGraphQLSchema(GraphQLFieldDefinition userDefinition) {GraphQLObjectType userQuery = GraphQLObjectType.newObject() .name('userQuery') .field(userDefinition) .build();return GraphQLSchema.newSchema().query(userQuery).build(); } /** * 創建GraphQLFieldDefinition對象 * * 根據定義的查詢對象做真正的查詢,返回查詢數據 * * 這里使用靜態對象構建數據,如果是查詢數據,可以在這里進行做查詢 * */ public static GraphQLFieldDefinition createGraphQLFieldDefinition(GraphQLObjectType userType) {return GraphQLFieldDefinition.newFieldDefinition().name('User').type(userType)// 靜態數據.dataFetcher(new StaticDataFetcher(new User(1L, '測試', 10))).build(); } /** * 定義GraphQLObjectType對象 * 該對象是用來做查詢響應對象的名稱和查詢的字段的定義 */ public static GraphQLObjectType createGraphQLObjectType() {return GraphQLObjectType.newObject().name('User').field(GraphQLFieldDefinition.newFieldDefinition().name('id').type(Scalars.GraphQLLong)).field(GraphQLFieldDefinition.newFieldDefinition().name('name').type(Scalars.GraphQLString)).field(GraphQLFieldDefinition.newFieldDefinition().name('age').type(Scalars.GraphQLInt)).build(); }}帶參數簡單查詢

自定義的查詢規范中,可以通過定義參數實現查詢,在API中可以獲取到參數通過參數實現自定義查詢,參數需要按照規范定義

/** * 簡單展示 GraphQL的查詢,以及通過JavaAPI響應數據 * * 傳遞參數進行查詢 */public class GraphQLSimpleDemoWithArgs { public static void main(String[] args) {GraphQLObjectType userType = createGraphQLObjectType();GraphQLFieldDefinition userDefinition = createGraphQLFieldDefinition(userType);GraphQLSchema graphQLSchema = createGraphQLSchema(userDefinition);GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build();String graph3 = '{User(id:1){id, name, age}}';ExecutionResult execute3 = graphQL.execute(graph3);// 獲取結果System.out.println(execute3.toSpecification()); } // 創建GraphQLSchema public static GraphQLSchema createGraphQLSchema(GraphQLFieldDefinition userDefinition) {GraphQLObjectType userQuery = GraphQLObjectType.newObject() .name('userQuery') .field(userDefinition) .build();return GraphQLSchema.newSchema().query(userQuery).build(); } /** * 創建GraphQLFieldDefinition對象 * * 根據定義的查詢對象做真正的查詢,返回查詢數據 * * 這里使用靜態對象構建數據,如果是查詢數據,可以在這里進行做查詢 * */ public static GraphQLFieldDefinition createGraphQLFieldDefinition(GraphQLObjectType userType) {return GraphQLFieldDefinition.newFieldDefinition().name('User').type(userType)// 設置參數查詢數據.argument(GraphQLArgument.newArgument().name('id').type(Scalars.GraphQLLong).build()).dataFetcher(environment -> { Long id = environment.getArgument('id'); return new User(id, 'name' + id, id.intValue());}).build(); } /** * 定義GraphQLObjectType對象 * 該對象是用來做查詢響應對象的名稱和查詢的字段的定義 */ public static GraphQLObjectType createGraphQLObjectType() {return GraphQLObjectType.newObject().name('User').field(GraphQLFieldDefinition.newFieldDefinition().name('id').type(Scalars.GraphQLLong)).field(GraphQLFieldDefinition.newFieldDefinition().name('name').type(Scalars.GraphQLString)).field(GraphQLFieldDefinition.newFieldDefinition().name('age').type(Scalars.GraphQLInt)).build(); } }

上面兩個關于GraphQL的簡單示例,一個是沒有參數的查詢,一個是通過傳遞參數的查詢,可以看出來,GraphQL的在查詢數據的控制權交給定義的查詢語句,GraphQL構建的數據作為基礎的數據源,如果使用GraphQL定義的接口具有靈活性和通用性,但是可以看出來,在使用方面也是較為復雜,并且接口多和較為復雜的情況下,相對于Restful來講,較為復雜,兩種方式各有優缺點

下一篇,將簡單示例在Springboot中使用GraphQL定義接口~~

以上就是Java 通過API操作GraphQL的詳細內容,更多關于Java 操作GraphQL的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品伊人久久| 日韩欧美2区| 麻豆国产欧美日韩综合精品二区| 日本欧美一区二区在线观看| 欧美va亚洲va日韩∨a综合色| 国产精品成久久久久| 国产精品毛片久久| 伊人久久大香线蕉av不卡| 秋霞国产精品| 在线国产一区二区| 亚洲丝袜啪啪| 国产亚洲精品美女久久| 精品视频在线你懂得| 婷婷成人在线| 一区二区亚洲视频| 国产欧美日韩在线观看视频| 精品不卡一区| 日韩专区视频网站| 国产一区精品福利| 国产成人精品一区二区三区免费| 中文在线中文资源| 亚洲永久字幕| 免费看久久久| 自拍日韩欧美| 久久亚洲道色| 免费在线观看日韩欧美| 精品视频一二| 免费日韩av片| 成人在线丰满少妇av| 久久aⅴ国产紧身牛仔裤| 国产欧美亚洲精品a| 婷婷亚洲综合| 精品女同一区二区三区在线观看| 国产韩日影视精品| 六月婷婷一区| 日韩av自拍| 欧美自拍一区| 亚洲五月婷婷| 精品一区二区三区免费看| 国产综合视频| 欧美国产一级| 国产毛片精品| 亚洲精品免费观看| 日韩和的一区二在线| 日韩福利视频导航| 国产一区二区中文| 美女一区网站| 国产伊人久久| 你懂的国产精品永久在线| 美女网站久久| 韩日一区二区三区| 久久国产电影| 99精品视频精品精品视频| 国产精品成人国产| 日韩欧美另类中文字幕| 夜久久久久久| 夜夜嗨一区二区| 午夜国产精品视频| 亚洲深夜视频| 亚洲日本网址| 日韩毛片在线| 久久一区二区三区喷水| 欧美亚洲国产精品久久| 久久人人99| 亚洲伦乱视频| 91精品福利| 中文字幕免费一区二区| 亚洲97av| 欧美伊人影院| 美女久久久久久| 成人亚洲一区| 亚洲精品一区二区妖精| 视频在线观看一区二区三区| 在线精品观看| 国产精品一区二区三区av| 精品一级视频| 久久精品国产亚洲夜色av网站| 美女毛片一区二区三区四区| 午夜国产一区二区| 五月亚洲婷婷 | 在线精品视频在线观看高清| 欧美大黑bbbbbbbbb在线| 欧美日韩国产一区二区三区不卡| 婷婷成人基地| 国产欧美一区二区三区国产幕精品 | 日韩av三区| 在线观看亚洲精品福利片| 特黄毛片在线观看| 日韩精品第二页| 中文字幕一区二区精品区| 91久久久久| 亚洲欧美日本日韩| 99视频精品视频高清免费| 国产高清一区二区| 婷婷久久免费视频| 国产在线日韩精品| 亚洲一级特黄| 国产精品手机在线播放| 成人在线丰满少妇av| 国模 一区 二区 三区| 欧美精品自拍| 亚洲综合精品四区| 亚洲成人精选| 国产亚洲高清一区| 精品资源在线| 亚洲一区二区网站| 国产白浆在线免费观看| 综合激情婷婷| 激情婷婷综合| 久久只有精品| 日韩超碰人人爽人人做人人添| 久久国产日本精品| 免费在线播放第一区高清av| 一区在线免费| 久久精品国产久精国产| 日韩精品亚洲专区在线观看| 国产中文一区| 成人国产精品久久| 国产日产一区| 日本久久二区| 亚洲伊人精品酒店| 亚洲永久字幕| 亚洲欧美日韩专区| av一区二区高清| 蜜臀91精品国产高清在线观看 | 久久久久久久久丰满| 日韩成人a**站| 国产精品超碰| 免费日韩成人| 精品99久久| 日韩激情一区| 成人精品中文字幕| 91精品xxx在线观看| 日韩中文在线电影| 欧美成人a交片免费看| 成人污污视频| 999久久久国产精品| 91精品成人| 蜜臀av亚洲一区中文字幕| 免费观看日韩电影| 亚洲伊人精品酒店| 欧美日韩1区2区3区| 97se亚洲| 精品视频一区二区三区在线观看| 日韩成人精品一区二区| 久久精品导航| 欧美专区18| 国产精品15p| 亚洲精品**中文毛片| 不卡av一区二区| 亚洲精品裸体| 精品久久97| 亚洲精品888| 国产免费av国片精品草莓男男| 精品久久91| 国产精品免费看| 国产精品自拍区| 伊人久久高清| 日本不卡在线视频| 日韩毛片视频| 美国欧美日韩国产在线播放| 国产极品嫩模在线观看91精品| 成人小电影网站| 日韩中文字幕不卡| 91亚洲成人| 日韩国产在线一| 欧洲一级精品| 久久av综合| 在线免费观看亚洲| 欧美福利专区| 亚洲精品福利电影| 国产精品色婷婷在线观看| 久久久久国产精品一区二区| 亚洲精品影院在线观看| 亚洲天堂久久| 日本美女一区| 美女尤物国产一区| 中文字幕亚洲影视| 好吊日精品视频 | 日韩精品社区| 在线亚洲自拍| 久久精品国产99久久| 国产精品久久观看| 久久中文字幕一区二区| 欧美日韩18| 在线亚洲观看| 五月婷婷六月综合| 久久三级视频| 久久久久91| 久久婷婷av| 日韩理论片av| 欧美日韩免费看片| 日本在线高清| 亚洲爱爱视频| 欧美日韩三区| 午夜在线视频一区二区区别| 亚洲在线观看| 亚洲日韩视频| 日韩国产欧美在线播放| 国产日韩一区二区三区在线播放|