Я не уверен, что самый лучший способ RESTful
+ HATEOS - это достичь моей цели.
Я хочу использовать операцию PATCH для обновления полей двух объектов, создавая взаимосвязь между ними, я не уверен, что текущий способ, которым я это делаю, является наиболее РЕСТАЛЬНЫМ способом сделать это.
Например,
У меня есть API, который управляет книгами и авторами.
У меня есть объект Author со списком книг.
{
"authorId": 1,
"email": "fred@gmail.com",
"firstName": "f",
"lastName": "red",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/authors/1",
},
{
"rel": "books",
"href": "http://localhost:8080/authors/1/books",
}
}
и Книга:
{
"bookId": 1,
"title": "REST is Hard",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/books/1",
},
{
"rel": "author",
"href": "http://localhost:8080/authors/1",
}
}
Вышеуказанные объекты являются DTO.
У меня есть бэкэнд Spring Boot, который управляет отношениями - это актуально только в том смысле, что реальные объекты сущностей выглядят немного иначе, и я думаю, что они немного дырявые.
В настоящее время API свяжет книгу и автора вместе, когда он получит ПАТЧ против http://localhost:8080/author/1/book/1
API свяжет author/1
и book/1
- Spring Boot добавляет сущность book/1
в список книг в сущности author/1
и устанавливает для поля author
book/1
значение `author / 1 '- то есть это двунаправленное отношение (автор) ко многим (книги).
Реализация в стороне (и я думаю, что есть еще улучшения, которые я могу сделать, чтобы реализация была лучше), каков наилучший способ формирования этой ссылки с помощью вызова RESTful?
REST и HATEOS достаточно болтливы, и я хотел не делать два URL-вызова (то есть один PATCH на author/1
и другой патч на book/1
), следовательно, http://localhost:8080/author/1/book/1
.
Есть ли канонически правильный «RESTful» способ сделать это? Как бы вы это реализовали?