Architektura oprogramowaniaJavaWeb application

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

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 poprania 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.

Tags:
Show Buttons
Hide Buttons