java调用Graphql接口
java调用Graphql接口最近项目调用第三方的接口,但是第三方接口是GraphQL,刚开始看见这个一脸懵逼,竟然是自己没有用过的语言,这时候就开始去网上找资料学习一下。1.什么是GraphQL?GraphQL 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL。它跟 SQL 的关系是共用 QL 后缀,就好像「汉语」和「英语
java调用Graphql接口
最近项目调用第三方的接口,但是第三方接口是GraphQL,刚开始看见这个一脸懵逼,竟然是自己没有用过的语言,这时候就开始去网上找资料学习一下。
1.什么是GraphQL?
GraphQL 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL。它跟 SQL 的关系是共用 QL 后缀,就好像「汉语」和「英语」共用后缀一样,但他们本质上是不同的语言。
GraphQL 跟用作存储的 NoSQL 没有必然联系,虽然 GraphQL 背后的实际存储可以选择 NoSQL 类型的数据库,但也可以用 SQL 类型的数据库,或者任意其它存储方式(例如文本文件、存内存里等等)。GraphQL 最大的优势是查询图状数据。GraphQL 是 Facebook 发明的。
- java什么调用Graphql接口?
首先需要引入jar到自己项目的pom文件里面
<dependency>
<groupId>org.mountcloud</groupId>
<artifactId>graphql-client</artifactId>
<version>1.2</version>
</dependency>
在用java实现调用Graphql时,我们首先可以尝试用postman工具调一下第三方接口,看看是不是可以调通,调用结果如下:
注:设置请求的头部
注:上面三个记得要注意,2和3就是请求参数,下面的就是返回结果,说明是可以调成功。
最后我们用java代码实现调用如下:
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.mountcloud.graphql.GraphqlClient;
import org.mountcloud.graphql.request.mutation.DefaultGraphqlMutation;
import org.mountcloud.graphql.request.mutation.GraphqlMutation;
import org.mountcloud.graphql.request.result.ResultAttributtes;
import org.mountcloud.graphql.response.GraphqlResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class GraphqlTestDemo {
public static void main(String[] args) {
String token = "**********";
String authorizationToken = "eyJhbGciOiJSU";
String url = "https://api.staging.transit.dev/graphql/transact";
GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(url);
Map<String,String> httpHeaders = new HashMap<>();
httpHeaders.put("content-type", "application/json");
httpHeaders.put("authorization", "Bearer "+authorizationToken);
graphqlClient.setHttpHeaders(httpHeaders);
//创建mutaion
GraphqlMutation mutation = new DefaultGraphqlMutation("transact");
//创建参数对象
Map<String,Object> input = new HashMap<String,Object>();
input.put("ref", "test/REDEEMED");
input.put("dry", true);
input.put("locationID", "35872673");
input.put("hostID", "865650030605402");
input.put("token", token);
//添加变量名
mutation.getRequestParameter().addObjectParameter("input", input);
//设置获取返回结果参数
mutation.addResultAttributes("ref");
ResultAttributtes resultAttributtes = new ResultAttributtes("voucher");
resultAttributtes.addResultAttributes("status","transactionID", "transactionTimestamp", "value");
mutation.addResultAttributes(resultAttributtes);
log.info("---------请求参数-----------mutation:{}", mutation.toString());
GraphqlResponse response = null;
try {
response = graphqlClient.doMutation(mutation);
} catch (IOException e) {
e.printStackTrace();
}
Map data = response.getData();
log.info("---------返回结果---------data:{}", JSON.toJSONString(data));
}
}
注:主要就是postman图片中2的请求参数的组装!!!
更多推荐
所有评论(0)