Servicio que se implementan en el paso-5
En este paso se maneja una relación de muchos a muchos entre Book y Author: Un libro puede tener uno o muchos autores y un autor puede haber escrito muchos libros.
Las representación de los recursos book y author cambian para poder modelar la relación entre ellos. La relación la modelamos en los dos sentidos: un libro tiene asociado un conjunto de autores (al menos 1) y un autor tiene asociado un conjunto de libros (al menos uno).
La representación detallada de Book
ahora incluye la colección de sus autores y la representación detallada de Author
ahora incluye la colección de sus libros.
Representación básica de Author
{
'id' : '' /* Tipo Long */,
'name' : '' /* Tipo String */,
'birthDate' : '' /* Tipo Date */
}
Este es un ejemplo de un Author en representación básica.
{
"id" : 1,
"name" : "Gabriel Garcia Marquez",
"birthDate" : "23091935"
}
Representación detallada
La representación detallada de Author incluye un listado de Book.
{
'id' : '' /* Tipo Long */,
'name' : '' /* Tipo String */,
'birthDate' : '' /* Tipo Date */,
'books': [
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
isbn: '' /*Tipo String*/,
description: '' /*Tipo String*/,
image: '' /*Tipo String*/,
publishingdate: '' /*Tipo Date*/
editorial: {
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/
}
}
]
}
El siguiente es un ejemplo de una representación detallada de Author
{
"id" : 1,
"name" : "Gabriel Garcia Marquez",
"birthDate" : "23091935",
"books" : [
{
"id" : 1,
"name" : "Cien años de soledad",
"description": "El libro se compone de 20 capítulos no titulados, en los cuales se narra una historia con una estructura cíclica temporal, puesto que los acontecimientos del pueblo y de la familia Buendía, así como los nombres de los personajes, se repiten una y otra vez, fusionando la fantasía con la realidad.",
"isbn" : "0307474720",
"image" : "http://goo.gl/IWNdCX",
"publishDate" : "01071967",
"editorial": {"id" : 1, "name" : "Plaza y Janes"}
},
{
"id" : 2,
"name" : "El coronel no tiene quien le escriba",
"description" : "...",
"isbn" : "0307474721",
"image" : "http://goo.gl/IWNdCX",
"publishDate" : "01071967",
"editorial": {"id" : 1, "name" : "Plaza y Janes"}
}
]
}
Representación básica de Book
A la representación básica de book le hemos agregado la author. La hemos agregado aquí dado que solo hay un autor por libro.
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
isbn: '' /*Tipo String*/,
image: '' /*Tipo String*/,
description: '' /*Tipo String*/,
publishingdate: '' /*Tipo Date*/,
editorial: '' /*Tipo Editorial*/
}
Ejemplo JSON de una representación Book
Representación detallada de Book
En este paso, la representación detalla de book es igual a la representación básica.
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
isbn: '' /*Tipo String*/,
image: '' /*Tipo String*/,
description: '' /*Tipo String*/,
publishingdate: '' /*Tipo Date*/,
editorial: '' /*Tipo representación básica de Editorial*/
authors: [{
'id' : '' /* Tipo Long */,
'name' : '' /* Tipo String */,
'birthDate' : '' /* Tipo Date */
}
] /*Tipo colección de reprentacion básicas de autor.*/
}
Servicios relacionados con la colección de libros de un autor authors/{authorid}
GET authors/{authorid}/books
Retorna la colección de objetos Book, en representación básica, asociados con un objeto Author con identificador authorid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
authorid |
Path |
authorid del objeto author del cual se va consultar sus libros |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Coleccion de objetos book en Representación detallada de book |
404 |
No existe un objeto author con el authorid solicitado |
Mensaje de error |
GET authors/{authorid}/books/{booksid}
Retorna el objeto Book con identificador booksid
, en representación detallada, asociado con el objeto Author authorid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
authorid |
Path |
authorid del objeto author del cual se va consultar sus libros |
Sí |
Integer |
booksid |
Path |
booksid del objeto book que se va a consultar |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Objeto book en Representación detallada de book |
404 |
No existe un objeto author con el authorid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid asociado con un autor authorid |
Mensaje de error |
POST authors/{authorid}/books/{booksid}
Agrega a la colección de libros de la author con identificador authorid
un objeto Book con identificador booksid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
authorid |
Path |
authorid del objeto author del cual se va a agregar un libro |
Sí |
Integer |
booksid |
Path |
booksid del objeto book que se va a agregar a la colección de libros de la author |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Se agregó el libro a la colección |
404 |
No existe un objeto author con el authorid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid dado |
Mensaje de error |
PUT authors/{authorid}/books
Remplaza la colección de objetos Book asociada con un objeto Author cuyo identificado es authorid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
authorsid |
Path |
ID del objeto Author cuya colección será remplazada |
Sí |
Integer |
body |
body |
Colección de objetos Book en Representación detallada de book |
Sí |
|
|
Respuesta
Código |
Descripción |
Cuerpo |
200 |
Se remplazó la colección |
Colección de objetos Book |
404 |
No existe un objeto author con el authorid dado |
Mensaje de error |
404 |
No existe alguno de los objetos book en la colección pasada por parámetro. |
Mensaje de error |
DELETE authors/{authorsid}/books/{booksid}
Remueve un objeto Book de la colección en un objeto Author.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
authorid |
Path |
authorid del objeto author del cual se va a borrar un libro |
Sí |
Integer |
booksid |
Path |
booksid del objeto book que se va a borrar de la colección de libros de la author |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
Objeto removido |
N/A |
404 |
No existe un objeto author con el authorid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid asociado con un autor authorid |
Mensaje de error |
Servicios relacionados con la colección de autores de un librobooks/{bookid}
GET books/{bookid}/authors
Retorna la colección de objetos Author, en representación básica, asociados con un objeto Book con identificador bookid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
bookid |
Path |
bookid del objeto book del cual se va consultar sus autores |
Sí |
Integer |
Respuesta
GET books/{bookid}/authors/{authorsid}
Retorna el objeto Author con identificador authorsid
, en representación detallada, asociado con el objeto Book bookid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
bookid |
Path |
bookid del objeto book del cual se va consultar sus autores |
Sí |
Integer |
authorsid |
Path |
authorsid del objeto author que se va a consultar |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Objeto author en Representación detallada de author |
404 |
No existe un objeto book con el bookid solicitado |
Mensaje de error |
404 |
No existe un objeto author con el authorid asociado con un autor bookid |
Mensaje de error |
POST books/{bookid}/authors/{authorsid}
Agrega a la colección de autores de la book con identificador bookid
un objeto Author con identificador authorsid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
bookid |
Path |
bookid del objeto book del cual se va a agregar un autorauthor |
Sí |
Integer |
authorsid |
Path |
authorsid del objeto author que se va a agregar a la colección de autores de la book |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Se agregó el autorauthor a la colección |
404 |
No existe un objeto book con el bookid solicitado |
Mensaje de error |
404 |
No existe un objeto author con el authorid dado |
Mensaje de error |
PUT books/{bookid}/authors
Remplaza la colección de objetos Author asociada con un objeto Book cuyo identificado es bookid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
booksid |
Path |
ID del objeto Book cuya colección será remplazada |
Sí |
Integer |
body |
body |
Colección de objetos Author en Representación detallada de author |
Sí |
|
|
Respuesta
Código |
Descripción |
Cuerpo |
200 |
Se reemplazó la colección |
Colección de objetos Author |
404 |
No existe un objeto book con el bookid dado |
Mensaje de error |
404 |
No existe alguno de los objetos author en la colección pasada por parámetro. |
Mensaje de error |
DELETE books/{booksid}/authors/{authorsid}
Remueve un objeto Author de la colección en un objeto Book.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
bookid |
Path |
bookid del objeto book del cual se va a borrar un autor |
Sí |
Integer |
authorsid |
Path |
authorsid del objeto author que se va a borrar de la colección de autores de la book |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
Objeto removido |
N/A |
404 |
No existe un objeto book con el bookid solicitado |
Mensaje de error |
404 |
No existe un objeto author con el authorid asociado con un autor bookid |
Mensaje de error |