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

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

Java 通過API操作GraphQL

瀏覽:196日期: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久久,三上悠亚国产精品一区二区三区
国产乱码精品| 国产亚洲高清视频| 91精品一区| 日韩中文字幕在线一区| 亚洲影视一区| 日韩亚洲精品在线观看| 日韩国产在线一| 91精品国产自产精品男人的天堂| 日韩高清一区在线| 国产精品欧美三级在线观看| 午夜性色一区二区三区免费视频| 日韩黄色免费网站| 国产精品jk白丝蜜臀av小说| 国产精品片aa在线观看| 你懂的国产精品| 成人台湾亚洲精品一区二区| 欧美片第1页| 不卡在线一区| 丝袜美腿一区二区三区| 日韩精品免费视频一区二区三区| 国产探花一区| 精品视频91| 久久婷婷亚洲| 日本 国产 欧美色综合| 国产视频网站一区二区三区| 国产精品久久久久久久久免费高清| 精品一区二区三区中文字幕| 久久激情中文| 亚洲人成精品久久久| 国产精品毛片视频| 91一区二区| 亚洲欧美日韩视频二区| 欧美在线91| 国产精品蜜芽在线观看| 欧美 日韩 国产一区二区在线视频| 三级欧美韩日大片在线看| 国产欧美一区二区三区国产幕精品| 成人在线免费观看91| 中文欧美日韩| 久久精品国产免费| 欧美日韩中文字幕一区二区三区| 久久国产66| 久久99蜜桃| 五月天激情综合网| 国产日产一区| 欧美1区2区3区| 青青草91视频| 99精品综合| 日韩国产欧美三级| 国产在线|日韩| 日本精品国产| 99久久亚洲精品蜜臀| 日本在线成人| 久久婷婷久久| 国产精品久久久久久久久久齐齐| 中文字幕在线官网| 日韩在线一二三区| 超级白嫩亚洲国产第一| 免费黄网站欧美| 亚洲黄色免费看| 日本不卡一区二区| 99久久99视频只有精品| 欧美精品国产一区| 亚洲成av人片一区二区密柚| 奇米亚洲欧美| 婷婷色综合网| 日韩av在线播放网址| 中文字幕亚洲影视| 成人美女视频| 91精品丝袜国产高跟在线| 久久天堂成人| 欧美激情91| 亚洲一二三区视频| 91精品精品| 电影91久久久| 国产日韩欧美一区在线| 亚洲欧美日韩视频二区| 日韩在线观看一区| 久久99免费视频| 日韩高清三区| 亚洲综合精品四区| 久久精品免费一区二区三区| 麻豆91在线播放| 日韩二区在线观看| 视频一区免费在线观看| 在线亚洲人成| 麻豆视频久久| 91成人精品在线| 首页国产欧美日韩丝袜| 欧美日韩在线二区| 日韩一区电影| 久久尤物视频| 国产一卡不卡| 日韩在线网址| 国产毛片一区| 婷婷成人综合| 日韩精品网站| 日韩精品2区| 国产一区二区三区久久久久久久久| 欧美日韩一区二区三区在线电影| 蜜桃一区二区三区| 色黄视频在线观看| 国产在线不卡一区二区三区| 国产日韩欧美三级| 日韩精品视频在线看| 亚洲精品乱码久久久久久蜜桃麻豆| 99国产精品视频免费观看一公开| 久久久人人人| 欧美中文一区二区| 久久久久国产精品一区三寸| 日韩中文首页| 日韩欧美精品综合| 日韩欧美字幕| 久久激情中文| 国产99久久| 91精品一区二区三区综合| 亚洲国产欧美日本视频| 日韩国产一区二区| 久久网站免费观看| 国产一区亚洲| 欧美精品一二| 91久久在线| 丝袜亚洲精品中文字幕一区| 日本大胆欧美人术艺术动态| 中文字幕一区二区三区在线视频| 中文字幕av一区二区三区人| 亚洲精品视频一二三区| 婷婷精品久久久久久久久久不卡| 喷白浆一区二区| 亚洲另类视频| 日韩中文字幕| 国产欧美精品| 精品美女在线视频| 国产suv精品一区| 麻豆理论在线观看| 日韩国产在线| 一区在线观看| 亚洲人成亚洲精品| 久久精品99久久久| 精品久久97| 秋霞影视一区二区三区| 亚洲天堂成人| 日韩影院精彩在线| 日韩av成人高清| 精品美女在线视频| 欧美亚洲日本精品| 国产综合视频| 亚洲影院天堂中文av色| 青青国产精品| 欧美www视频在线观看| 日本欧美不卡| 国产偷自视频区视频一区二区| 亚洲精品极品| 久久免费福利| 1024精品一区二区三区| 亚洲精品黄色| 国产+成+人+亚洲欧洲在线| 日韩影院二区| 免费精品视频在线| 久久字幕精品一区| 香蕉视频亚洲一级| 红桃视频欧美| 欧美在线精品一区| 岛国av在线网站| 午夜在线精品偷拍| 国产精品密蕾丝视频下载| 亚洲成人va| 婷婷视频一区二区三区| 超碰在线99| 免费人成在线不卡| 精品国产99| 先锋影音久久久| 国产高清亚洲| 亚洲免费黄色| 麻豆国产欧美一区二区三区| 亚洲一级黄色| 日韩久久99| 美女网站视频一区| 日本va欧美va瓶| 久久免费黄色| 国产精品亚洲一区二区在线观看| 色婷婷精品视频| 欧美一区在线观看视频| 婷婷国产精品| 国产精品中文字幕制服诱惑| 91精品亚洲| 国产精品一区高清| 亚洲国内欧美| 美女久久久精品| 视频一区国产视频| 水蜜桃久久夜色精品一区| 视频一区二区三区在线| 国产一区福利| 日韩免费精品| 欧美+日本+国产+在线a∨观看| 久久国产麻豆精品| 亚洲欧洲另类| 98精品视频| 国产情侣久久| 久久亚洲图片|