Я использую аннотацию @RepositoryRestResource, чтобы выставить Spring JPA Data в качестве успокоительной службы. Он отлично работает. Однако я борюсь с ссылкой на конкретный объект в угловом приложении.
Как известно, Spring Data Rest не сериализует @Id объекта, но ответ HAL содержит ссылки на объекты (_links.self, _embedded.projects []._ links.self), как в следующем примере:
{
"_links": {
"self": {
"href": "http://localhost:8080/api/projects{?page,size,sort}",
"templated": true
}
},
"_embedded": {
"projects": [
{
"name": "Sample Project",
"description": "lorem ipsum",
"_links": {
"self": {
"href": "http://localhost:8080/api/projects/1f888ada-2c90-48bc-abbe-762d27842124"
}
}
},
...
Мое угловое приложение требует указать ссылку на конкретный объект проекта в URL-адресе, например http://localhost/angular-app/#/projects/ {id}. Я не думаю, что использование href - хорошая идея. UUID (@Id) кажется лучше, но явно не указан как поле. Это точка, которую я застрял. После прочтения тонны статей я придумал 2 идеи, но я не считаю ни один из них идеальным:
Идея 1: Включить явную сериализацию поля @Id и просто использовать ее для ссылки на объект.
Предостережение: выставлять базы данных для внутренних интерфейсов.
Идея 2:
Держите поле @Id внутренним и создайте дополнительный поле "бизнес-идентификатор", которое можно использовать для идентификации определенного объекта.
Предостережение: дополнительное поле в таблице (пустое пространство).
Буду признателен за ваше замечание по этому поводу. Может быть, я просто излишне сдержан, чтобы реализовать любую из представленных идей, может быть, лучше.
Чтобы дать вам другой вариант, есть специальная оболочка для Углового + Spring Data Rest, которая, вероятно, поможет вам: