简体   繁体   中英

Make a POST call to GraphQL API programmatically using Java

I have to send a query with some headers and graphQL variables as a POST call to a GraphQL API in java. I also have to send some headers and authentication parameters in the query. Right now, I am doing a manual call in POSTMAN, but I want to do this programmatically. Can you guys help me where to start off. My query and variables are as follows

query sampleQuery($param: SampleQueryParams!, $pagingParam: PagingParams) {
    sampleLookup(params: $param, pagingParams: $pagingParam) {
        ID
        name1
        name2 
    }
}

And my GraphQL variables are as follows :

{"param": {"id": 58763897}, "pagingParam": {"pageNumber": 0, "pageSize": 10 } }

I have no clue where to start at. Could you guys please help

I have to send a query with some headers and graphQL variables as a POST call to a GraphQL API in java. I also have to send some headers and authentication parameters in the query. Right now, I am doing a manual call in POSTMAN, but I want to do this programmatically. Can you guys help me where to start off. My query and variables are as follows

query sampleQuery($param: SampleQueryParams!, $pagingParam: PagingParams) {
    sampleLookup(params: $param, pagingParams: $pagingParam) {
        ID
        name1
        name2 
    }
}

And my GraphQL variables are as follows :

{"param": {"id": 58763897}, "pagingParam": {"pageNumber": 0, "pageSize": 10 } }

I have no clue where to start at. Could you guys please help

I would recommend using graphql-java-codegen plugin for these purposes.

It provides a possibility to generate classes based on the schema which you can supply to any HTTP client.

For example, GraphQL server has following schema and we want to perform productById query:

type Query {
    productById(id: ID!): Product
}

type Product {
    id: ID!
    title: String!
    price: BigDecimal!
}

graphql-java-codegen will generate all classes required for you to perform a query:

// preparing request
ProductByIdQueryRequest request = new ProductByIdQueryRequest();
request.setId(productId);
// preparing response projection (which fields to expect in the response)
ProductResponseProjection responseProjection = new ProductResponseProjection()
        .id()
        .title()
        .price();

// preparing a composite graphql request
GraphQLRequest graphQLRequest = new GraphQLRequest(request, responseProjection);

// performing a request with the constructed object
ProductByIdQueryResponse responseBody = restTemplate.exchange(URI.create("https://product-service:8080/graphql"),
        HttpMethod.POST,
        new HttpEntity<>(graphQLRequest.toHttpJsonBody()),
        ProductByIdQueryResponse.class).getBody();
// Fetching a serialized object from response
Product product = responseBody.productById();

More examples can be found on GitHub: https://github.com/kobylynskyi/graphql-java-codegen#supported-plugins

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM