У меня проблема, аналогичная той, которая была задана в в этом вопросе , однако применение предложенного решения
spring.jackson.default-property-inclusion=NON_NULL
не останавливает HATEOAS от рендеринга ссылок с нулевыми свойствами.Вот мое объявление контроллера
@RestController
@ExposesResourceFor(Customer.class)
public class CustomerController {
// controller methods here
}
и класс веб-конфигурации
@Configuration
@EnableSpringDataWebSupport
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class DataApiWebConfiguration extends WebMvcConfigurationSupport {
// config here
}
В методе Controller get, который возвращает ресурс, я объявляю отображение следующим образом
@GetMapping(value = "/customers/{id}", produces = MediaTypes.HAL_JSON_VALUE)
и затем я возвращаю Resource
Optinal<Customer> customer = customerRepository.findById(id);
return customer.map(customerResourceAssembler::toResource).map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
CustomerResourceAssembler
расширяет SimpleIdentifiableResourceAssembler
, как показано в этом примере с весенним ненавистью .
Но в ответеbody Я до сих пор вижу ссылки, отображаемые с нулевыми свойствами
"links": [
{
"rel": "self",
"href": "http://localhost:8080/customers/11",
"hreflang": null,
"media": null,
"title": null,
"type": null,
"deprecation": null
}
]
Это не похоже на то, каким должен быть ответ HATEOAS, как в примерах, которые я вижу _links
not links
в JSON