我一直在使用defaultMediaType配置属性设置为“application / json”来获得“普通”JSON,这更容易处理,而且我需要的只是:
{
"links": [
],
"content": [
{
"username": "admin",
"id": 1,
"authorities": [
"ROLE_ADMIN"
],
"content": [ ],
"links": [
{
"rel": "self",
"href": "http://localhost:8080/apiv1/data/users/1"
},
{
"rel": "logisUser",
"href": "http://localhost:8080/apiv1/data/users/1"
},
{
"rel": "mandant",
"href": "http://localhost:8080/apiv1/data/users/1/mandant"
}
]
},...
],
"page": {
"size": 20,
"totalElements": 3,
"totalPages": 1,
"number": 0
}
}
但在整合测试中结果是impossible to use(不能用TestRestTemplate解析,也不能用Traverson等解组)。
使用hal + json可以很好地与Traverson API一起使用。
现在,由于名称是默认 MediaType,Spring Data Rest Reference总是提到“支持的媒体类型”,我希望使用“Accept”标头在两个变体之间切换。但这不起作用(也试过“Content-Type”和两者。使用“application / json和application / hal + json”)。
似乎还有一个属性“useHalAsDefaultJsonMediaType”,但就我所见,它根本没有做任何事情。
所有希望都失去了吗?为什么文档如此令人困惑?有一种方法可以在表示之间切换,这表现得并不像顾名思义。没有记录的方法来反序列化“旧”表示,而新的表示不能与TestRestTemplate一起使用。非常非常令人沮丧。我已经花了很多时间在这上面:(
答案 0 :(得分:-1)
制作RepositoryRestConfigurer
@Configuration
public class RestRepositoryConfig extends RepositoryRestConfigurerAdapter {
@Value("${spring.hateoas.use-hal-as-default-json-media-type:true}")
private boolean useHalAsDefaultJsonMediaType;
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.useHalAsDefaultJsonMediaType(useHalAsDefaultJsonMediaType);
}
}
并设置
spring.hateoas.use-hal-as-default-json-media-type=false