Witam, nie potrafię zrobić zapytania POST do zewnętrznego API, które zwraca informacje o wysyłanym produkcie spozywczym w Body zapytania.
Przykład Post Body wysyłanego:
{ "query": "bread" }
Przykładowa odpowiedź z aplikacji Postman (nie wklejam całej) :
{
"foods": [
{
"food_name": "bread",
"brand_name": null,
"serving_qty": 1,
"serving_unit": "slice",
"serving_weight_grams": 29,
"nf_calories": 77.14,
"nf_total_fat": 0.97,
"nf_saturated_fat": 0.2,
"nf_cholesterol": 0,
"nf_sodium": 142.1,
"nf_total_carbohydrate": 14.33,
"nf_dietary_fiber": 0.78,
"nf_sugars": 1.64,
"nf_protein": 2.57,
"nf_potassium": 36.54,
"nf_p": 28.42,
mój kod :
@GetMapping(path = "siema")
public Food getFood(){
Map<String, String> bodyMap = new HashMap();
bodyMap.put("query","bread");
Food block = webClientBuilder.build()
.post()
.uri("https://trackapi.nutritionix.com/v2/natural/nutrients")
.header("x-app-id", "86ae75c0")
.header("x-app-key", "6e2a5c7f15298becaf573be50ca4cbc3")
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(bodyMap))
.retrieve()
.bodyToMono(Food.class)
.block();
return block;
}
Problem polega na tym, że w zwracanym obiekcie wsystko jest nullem, a wykonując to w Postmanie wszystko działa prawidłowo. Jestem początkujący jeśli chodzi o zapytania do API w Springu. Model zwracanych danych zrobiłem z pomocą pluginu do Intelij json2pojo.
Wszystko jest bezpośrednio w funkcji z Getmapping oraz zwracany jest Food w celach testowych. Docelowo w kontrolerze rest będzie tylko wywołanie funkcji i będzie zwracała Listę.