Question
How can I configure Spring Data REST to output data in plain JSON format instead of the default HAL format?
@Bean
public HttpMessageConverter<Object> customJacksonHttpMessageConverter() {
return new MappingJackson2HttpMessageConverter();
}
Answer
Spring Data REST is designed to expose REST APIs conforming to the HAL (Hypertext Application Language) standard. However, developers may prefer a simpler JSON format for their APIs. This guide explains how to configure Spring Data REST to return plain JSON instead of HAL format.
@Bean
public HttpMessageConverters customConverters() {
HttpMessageConverter<?> additional = new MappingJackson2HttpMessageConverter();
return new HttpMessageConverters(additional);
}
Causes
- Spring Data REST defaults to HAL for media type 'application/hal+json'.
- Configuration settings dictate the output format.
Solutions
- Use a custom HttpMessageConverter to override the default HAL output.
- Configuring Spring to accept only 'application/json' when responding to requests.
Common Mistakes
Mistake: Not configuring the MediaType correctly in controller methods.
Solution: Ensure that your controller methods respond with `@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)`.
Mistake: Forgetting to add custom converters to the Spring context.
Solution: Make sure your custom converters bean is correctly declared in the application context.
Helpers
- Spring Data REST
- Plain JSON
- HAL format
- REST API
- Spring Framework