通过使用SpringBoot将MongoDB集合作为REST服务公开,我在服务上执行HTTP GET时会收到这样的文档
$ curl http://localhost:8080/people
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people{?page,size,sort}",
"templated" : true
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"_embedded" : {
"persons" : [ {
"firstName" : "Frodo",
"lastName" : "Baggins",
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/53149b8e3004990b1af9f229"
}
}
} ]
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
集合中包含的人员位于“_embedded”部分。
我想简单地使用People列表,那么使用的URL是什么?或者,这个返回文档的对象类型是什么,以便我可以反序列化它?
答案 0 :(得分:0)
这些只是Spring Mongo数据休息API上可用的休息端点。
{[/{people}],methods=[OPTIONS],produces=[application/hal+json || application/json]}
{[/{people}],methods=[HEAD],produces=[application/hal+json || application/json]}
{[/{people}],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}],methods=[GET],produces=[application/x-spring-data-compact+json || text/uri-list]
{[/{people}],methods=[POST],produces=[application/hal+json || application/json]}
{[/{people}/{id}],methods=[OPTIONS],produces=[application/hal+json || application/json]}
{[/{people}/{id}],methods=[HEAD],produces=[application/hal+json || application/json]}
{[/{people}/{id}],methods=[GET],produces=[application/hal+json || application/json]}
{{/{people}/{id}],methods=[PUT],produces=[application/hal+json || application/json]}
{[/{people}/{id}],methods=[PATCH],produces=[application/hal+json || application/json]}
{[/{people}/{id}],methods=[DELETE],produces=[application/hal+json || application/json]}
{[/ || ],methods=[OPTIONS],produces=[application/hal+json || application/json]}
{[/ || ],methods=[HEAD],produces=[application/hal+json || application/json]}
{[/ || ],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}/{id}/{property}],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}/{id}/{property}/{propertyId}],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}/{id}/{property}],methods=[DELETE],produces=[application/hal+json || application/json]}
{[/{people}/{id}/{property}],methods=[GET],produces=[application/x-spring-data-compact+json || text/uri-list]}
{[/{people}/{id}/{property}],methods=[PATCH || PUT || POST],consumes=[application/json || application/x-spring-data-compact+json || text/uri-list],produces=[application/hal+json || application/json]}
{[/{people}/{id}/{property}/{propertyId}],methods=[DELETE],produces=[application/hal+json || application/json]}
{[/{people}/search],methods=[HEAD],produces=[application/hal+json || application/json]}
{[/{people}/search],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}/search],methods=[OPTIONS],produces=[application/hal+json || application/json]}
{[/{people}/search/{search}],methods=[GET],produces=[application/hal+json || application/json]}
{[/{people}/search/{search}],methods=[GET],produces=[application/x-spring-data-compact+json]}
{[/{people}/search/{search}],methods=[OPTIONS],produces=[application/hal+json || application/json]}
{[/{people}/search/{search}],methods=[HEAD],produces=[application/hal+json || application/json]}
如果我们知道该特定文件的_id,我们就可以获得一份人员文件。
我们只能使用搜索API来获取_embedded
json对象。例如,
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {
List<Person> findAllByIdIsNotNull();
}
由于_id
在MongoDB中不为空,如果我们点击此端点http://localhost:8080/people/search/findAllByIdIsNotNull
,我们可以获取所有文档。答复如下。
{
"_embedded": {
"people": [{
"firstName": "N1",
"lastName": "N2",
"_links": {
"self": {
"href": "http://localhost:8080/people/59d54d2bb13148a7e93953c8"
},
"person": {
"href": "http://localhost:8080/people/59d54d2bb13148a7e93953c8"
}
}
}
}
获取个人文档的最佳方法是使用一些json解析apis,如shell脚本中的jq
或java等中的gson / jackson。
希望这有帮助。