Использование GraphQL API в контроллере загрузки Spring

Мне нужно использовать API-интерфейс graphQL, предоставленный третьей стороной, внутри моего контроллера загрузки Spring, я пробовал, как упоминалось, здесь, но получил ошибку 400. Ниже приведен код:

@SuppressWarnings("unchecked")
@RequestMapping(value = "/graphQLTest")
public ResponseEntity<?> testGraphQL() throws JsonProcessingException {

    CloseableHttpClient client= null;
    CloseableHttpResponse response= null;

    client= HttpClients.createDefault();
    HttpPost httpPost= new HttpPost("http://172.30.66.149:3000/graphql");

    httpPost.addHeader("Accept","application/json");

    try {
        StringEntity entity= new StringEntity("{\"query\":\"{hello}\"}");

        httpPost.setEntity(entity);
        response= client.execute(httpPost);
        System.out.println("response: "+response);
    }

    catch(UnsupportedEncodingException e){
        e.printStackTrace();
    }
    catch(ClientProtocolException e){
        e.printStackTrace();
    }
    catch(IOException e){
        e.printStackTrace();
    }

    return null;
}

Когда я попытался вызвать тот же URL-адрес в Postman, я получил ответ, приведенный ниже снимок экрана:

Использование GraphQL API в контроллере загрузки Spring

Но когда я пробую это в своем контроллере, я получаю ошибку ниже. Может ли кто-нибудь помочь мне, как я могу использовать чей-то GraphQL API.

Error: HttpResponseProxy{HTTP/1.1 400 Bad Request [X-Powered-By: Express, Content-Type: application/json; charset=utf-8, Content-Length: 53, ETag: W/"35-1vperDe+r7EpHry/i+J3wg", Date: Tue, 24 Apr 2018 12:32:52 GMT, Connection: keep-alive] ResponseEntityProxy{[Content-Type: application/json; charset=utf-8,Content-Length: 53,Chunked: false]}}

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 818
1

Ответы 1

Я просто попытался вызвать свой API-интерфейс graphQL через jersey api, как показано ниже, и смог получить ответ.

@SuppressWarnings("unchecked")
@RequestMapping(value = "/graphQLTest")
public ResponseEntity<?> testGraphQL() throws JsonProcessingException {

    JSONObject jsonObj = new JSONObject();     
    jsonObj.put("query", "{\n" + 
        "  hello\n" + 
        "}");

    Client client = Client.create();
    String URL = "http://172.30.66.149:3000";
    WebResource webResource = client.resource(URL);

    ClientResponse response = webResource.type("application/json").accept("application/json").post(ClientResponse.class, jsonObj.toString());
    String output = response.getEntity(String.class);
    System.out.println(output);

    return null;
}

Есть ли альтернативный способ сделать этот вызов или, в частности, способ graphQL?

Другие вопросы по теме