w , , ,

Spring Boot #13 – przesyłanie obiektów JSON z wykorzystaniem RestTemplate

Spring Boot
Spring Boot

W omawianym przypadku zostanie przedstawiony sposób przesyłania obiektu w formacie JSON, do API.

Przekazywany obiekt

Dla przykładu – obiekt jaki jest przyjmowany przez API składa się z dwóch pól:

 private double price;
 private String name;

Przykładowy obiekt, jaki może być przesyłany (zgodny z powyższą strukturą obiektu) ma następującą formę w JSON:

{"name":"mouse","price":5}

API

Dla dobrego zrozumienia przestawiam API do którego będę się odwoływał. Zmienna itemList stanowi Liste elementów typu Product.

@PostMapping("/addProduct")
public void addProduct(@RequestBody Product product) {
	itemList.add(product);
}

Implementacja

Po stronie klienta należy przesłać encje wraz z nagłówkiem informującym o formacie przesyłanych danych.

Aby to zrealizować posłużę się klasą RestTemplate. Podstawowe wykorzystanie znajdziesz w poprzednim artykule integracja z REST API

private static void addProductFromClient() {
	RestTemplate restTemplate = new RestTemplate();
	String jsonToSent = "{\"name\":\"mouse\",\"price\":5}";

	HttpHeaders httpHeaders = new HttpHeaders();
	httpHeaders.add(HttpHeaders.CONTENT_TYPE, "application/json");

	HttpEntity httpEntity = new HttpEntity(jsonToSent, httpHeaders);

	ResponseEntity exchange = restTemplate.exchange(
			"http://localhost:8080/addProduct",
			HttpMethod.POST,
			httpEntity,
			Void.class);
}

W powyższej implementacji w postaci String zadeklarowany został przekazywany JSON. Dodatkowo należy poinformować odbiorcę, że to właśnie w tym formacie zostanie dostarczony obiekt. Dlatego też w linii 5 utworzony został nagłówek a w linii 6 dodana informacja o typie content’u.

W następnej kolejności została stworzona encja. Encja zawiera dwa wcześniej zdefiniowane elementy -> JSON (jsonToSent) + nagłówek (httpHeaders).

Obiekt encji zostaje uwzględniony w metodzie exchange (linia 13) i przesłany do API.

Przetestuj!

Przykładowa implementacja jest dostępna do pobrania w serwisie GitHub. Aplikacja zawiera w sobie zarówno API i jak i klienta. W pierwszej kolejności uruchom aplikacje Springboot’ową, a następnie uruchom klasę ProductApiClient.

https://github.com/bykowski/springboot-body-parameterized

 

W kolejnym kursie zostanie omówiony interfejs Retrofit.

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Face detection

Projekt – rozpoznawanie twarzy

hibernate

Hibernate #4 – konfiugurowanie framerwoka w klasie (hibernate bez xml)