有人知道一种配置Spring Data Rest的方法,以便它返回纯JSON实体而不是HAL吗?
具有一个带有Spring Data REST和MongoDB的Spring Boot应用程序,我想返回以下内容:
[
{
"name" : "Leonid",
"address" : {
"city" : "My city",
"street" : "My st.",
"house" : 1
}
}
]
代替此:
{
"_embedded" : {
"persons" : [ {
"name" : "Leonid",
"address" : {
"city" : "My city",
"street" : "My st.",
"house" : 1
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons/5bba258c85c61305d4add5f1"
},
"person" : {
"href" : "http://localhost:8080/persons/5bba258c85c61305d4add5f1"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons{?page,size,sort}",
"templated" : true
},
"profile" : {
"href" : "http://localhost:8080/profile/persons"
}
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
我已经尝试使用spring.hateoas.use-hal-as-default-json-media-type=false
和spring.data.rest.defaultMediaType=application/json
,但是这些属性都根本不会影响查找所有端点。另外,我尝试扩展RepositoryRestConfigurer
并在那里配置相同的选项,但随后我开始收到这样的响应:
{
"links" : [ {
// some stuff
}, {
// some stuff
} ],
"content" : [ {
"name" : "Leonid",
"address" : {
"city" : "Saint Petersburg",
"street" : "Zastavskay st.",
"house" : 22,
"content" : [ ],
"links" : [ ]
},
"content" : [ ],
"links" : [ {
// some stuff
}, {
// some stuff
} ]
} ],
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
UPD:
这是文档:
@Document
@Data
public class Person {
@Id
@JsonIgnore
private String id;
private String name;
private Address address;
}
然后回购:
@RepositoryRestResource
public interface PersonRepository extends MongoRepository<Person, String> {
}
答案 0 :(得分:-1)
您可以使用Payload类来接收/发送所需的键/值对。
基本上,使用getter和setter创建具有所需值的POJO,并使用所需的任何验证约束注释。
null
然后在控制器上,只需返回带有有效负载的ResponseEntity。
public class personResponsePayload
{
@NotBlank
private String id;
@NotBlank
private String name;
@NotBlank
private Address address;
// Constructor + Getters and Setters
}
杰克逊将处理其他所有事务。此过程可以同时处理请求和响应。