4 votes

Appel à AWS API Gateway, problème avec les appels GET

J'appelle l'API AWS Gateway ci-dessous à partir d'une application console Java. Dans postman, cela fonctionne parfaitement avec les signatures AWS.

GET [https://api.valorebooks.com/bid?isbns=\[](https://api.valorebooks.com/bid?isbns=[) "9780026840019"]

J'utilise le SDK AWS et cette bibliothèque. https://github.com/rpgreen/apigateway-generic-java-sdk

L'application console passe le paramètre isbns mais l'API renvoie HTTP:400

Source API : https://valorebooks.github.io/api/source/bid/

0voto

Kamran Qadir Points 20

Conversion des paramètres en chaîne json et affichage de cette chaîne en tant que paramètre de la chaîne de requête.

Map<String, String> parameters = new LinkedHashMap<>();
List<String> productsIsbs = Arrays.asList(request.getProducts())
                    .stream().map(x -> x.getIsbn()).collect(Collectors.toList());
String params = new Gson().toJson(productsIsbs).replace("\"", "\'");
parameters.put("isbns", params);

GenericApiGatewayRequest apiGatewayRequest;
        try {

            apiGatewayRequest = new GenericApiGatewayRequestBuilder()
                            .withHeaders(headers)
                            .withHttpMethod(HttpMethodName.GET)
                            .withResourcePath("/bid")
                            .withParameters(parameters)
                            .build();

            GenericApiGatewayApacheResponse response = client.executeGetWithHttpClient(apiGatewayRequest);

            if(response.getHttpResponse().getStatusLine().getStatusCode() == 200) {
                String responseJson = response.getBody();
            }

        } catch (GenericApiGatewayException e) {   // exception thrown for any non-2xx response
            System.out.println(String.format("Client exception:%s - %s", e.getStatusCode(), e.getMessage()));
            e.printStackTrace();
        }

-1voto

Syl Points 1138

Avez-vous essayé un GET comme celui-ci ?

https://api.valorebooks.com/bid?isbns=9780026840019

Il existe différentes façons de représenter une liste dans les paramètres d'une requête. Il se peut également que votre passerelle API ne soit pas configurée correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X