Двойной ключ _links в ответе REST Projection - PullRequest
0 голосов
/ 11 июня 2018

чтобы добавить мои ссылки в рамку Json проекции, я добавил следующий класс:

@Component
public class ResumeEntityProjectionResourceProcessor implements ResourceProcessor<Resource<ResumeEntity>> {

@Override
public Resource<ResumeEntity> process(Resource<ResumeEntity> resource) {

    UriComponents uriComponents = ServletUriComponentsBuilder.fromCurrentContextPath()
            .path("/api/entities/search/findEntities")
            .buildAndExpand(Long.toString(resource.getContent().getId()));
    resource.add(new Link(uriComponents.toUriString(), "findEntities"));

    return resource;
}

Проблема, с которой я теперь столкнулся в качестве возвращаемого значения, заключалась в двух ключах "_links", один со ссылками по умолчанию плюсмои ссылки и другие только с моими ссылками.

{
"_embedded": {
    "entities": [{
            "id": 1696,
            "reference": "aaaaaa",
            "_links": {
                "self": {
                    "href": "http://localhost:8080/myProject/api/entities/1696{?projection}",
                    "templated": true
                },
                "findByParametresValide": {
                    "href": "http://localhost:8080/myProject/api/entities/search/findEntities"
                }
            },
            "_links": {
                "findByParametresValide": {
                    "href": "http://localhost:8080/myProject/api/entities/search/findEntities"
                }
            }
        }
    ]
}
}

Как я сохранил только первый тег?

ожидаемый результат

{
"_embedded": {
    "entities": [{
            "id": 1696,
            "reference": "aaaaaa",
            "_links": {
                "self": {
                    "href": "http://localhost:8080/myProject/api/entities/1696{?projection}",
                    "templated": true
                },
                "findByParametresValide": {
                    "href": "http://localhost:8080/myProject/api/entities/search/findEntities"
                }
            }
        }
    ]
}
}

спасибо

1 Ответ

0 голосов
/ 13 июня 2018
@Override
public Resource<ResumeEntity> process(Resource<ResumeEntity> resource) {
if (resource.getLinks().isEmpty()) { 
return resource; 
}
    UriComponents uriComponents = ServletUriComponentsBuilder.fromCurrentContextPath()
            .path("/api/entities/search/findEntities")
            .buildAndExpand(Long.toString(resource.getContent().getId()));
    resource.add(new Link(uriComponents.toUriString(), "findEntities"));

    return resource;
}
...