Немного больше улучшения может достичь того, что вы ищете.
Создайте обертку для продуктов. Что-то вроде
class ProductsDTO {
private int count;
private List<Products> products;
/* create setters and getters for the fields */
}
, а затем в вашем REST вызова
@RequestMapping(value = { "" }, method = RequestMethod.GET)
public ResponseEntity<?> greet(@PathVariable Optional<Integer> productId) {
List<Products> products = productService.findAllCategories();
int count = products.size();
ProductsDTO productsDTO = new ProductsDTO();
productsDTO.setCount(count);
productsDTO.setProducts(products);
return new ResponseEntity<ProductsDTO>(productsDTO, HttpStatus.OK);
}
EDIT:
@Shams Tabraiz Alam - Не уверен, что если вид результата, который вы хотите, чтобы сформировать это правильный путь, потому что, когда вы говорите «подсчет» и «список», совершенно верно, что вы возвращаетесь, и список сущности (продукта), и его счет результат [количество наименований продукции]. Не совсем точно цель добавления дополнительных данных, поскольку она удаляет фактическое значение возвращаемого списка, и это считается результатом. Во всяком случае, это моя точка зрения.
Для вашей ситуации, если вы не хотите использовать DTO и использовать карту, чтобы добавить как многие свойства, как вы хотите, я сделал пример кода (Maven путь)
Добавить Spring и другие существующие зависимостей, а затем добавить Джексона зависимостей в pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
и есть контроллер REST,
@RequestMapping(value = "/locations", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getAll() {
List<Location> locations = locationService.getLocations();
List<Country> countries = countryService.getCountries();
Map<String, Object> result = new HashMap<String,Object>();
result.put("count",locations.size());
result.put("locations",locations);
result.put("countries",countries);
// Add any additional props that you want to add
return new ResponseEntity<Map<String,Object>>(result, HttpStatus.OK);
}
Создание и развертывание сотрудничества de на вашем локальном веб-сервере (порт 8080) ИЛИ запустить через командную строку с помощью maven - mvn tomcat7: запустить
Проверьте это.
Командная строка -
curl -H "Accept: application/json" -H "Content-type: application/json" -X GET http://localhost:8080/api/locations
Browser
http://localhost:8080/api/locations
Полный код здесь - https://github.com/satya-j/loco
создать обертку его и установить как счета и продукты собственности в другой боб и заменить список с новым боба ProductsDto, как как сделано @ сатья-д ниже. –
TechnoCrat
@TechnoCrat Предположим, у меня есть еще одна модель Клиентов, и я хочу то же самое, тогда мне придется сделать еще одну оболочку и так далее для других моделей. Мне нужно общее решение, чтобы во время выполнения я мог вернуть Json в любом формате. –
в этом случае вам нужно будет добавить новое свойство в класс ProductsDTO со списком как показано ниже класс ПродуктыDTO { private int count; частный Список продукты; частный Список клиентов; } –
TechnoCrat