Servicios que se implementan en el paso-3
Las representación de los recursos book y editorial cambian para poder modelar la relación entre ellos. La relación la modelamos en los dos sentidos: un libro tiene asociada una editorial y una editorial tiene asociado un conjunto de libros.
Representación básica de Editorial
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
}
La representación detallada de editorial contiene ahora la colección de los libros en su representación básica.
Representación detallada de Editorial
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
books: '' /*Tipo Colección de representaciones básicas de Book*/
}
Ejemplo Representación detallada de Editorial
{
"id" : 1,
"name" : "Plaza y Janes",
"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 editorial. La hemos agregado aquí dado que solo hay una editorial por libro.
{
id: '' /*Tipo Long*/,
name: '' /*Tipo String*/,
isbn: '' /*Tipo String*/,
image: '' /*Tipo String*/,
description: '' /*Tipo String*/,
publishingdate: '' /*Tipo Date*/,
editorial: '' /*Tipo representacion básica de Editorial*/
}
Ejemplo JSON de una representación Book
{ "id": 123,
"description": "Jorge Fondebrider traza un mundo fantástico con mapas de la geografía real y de sus mitologías, observando a los hombres lobo que han vivido en la imaginación de Europa y América.",
"image": "https://static.iris.net.co/arcadia/upload/images/2017/7/31/64899_1.jpg",
"isbn": "930330149-8",
"name": "Historia de los hombres lobo",
"publishingdate": "2000-08-20T00:00:00-05:00",
"editorial": {
"id": 100,
"name": "Oveja Negra"
}
}
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 representacion básica de Editorial*/
}
Servicios relacionados con la colección de libros de una editorial editorials/{editorialid}
GET editorials/{editorialid}/books
Retorna una colección de objetos Book,en representación básica, asociados con un objeto Editorial.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
editorialid |
Path |
editorialid del objeto editorial 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 editorial con el editorialid solicitado |
Mensaje de error |
GET editorials/{editorialid}/books/{booksid}
Retorna el objeto Book con identificador booksid
, en representación detallada, asociado con el objeto Editorial editorialid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
editorialid |
Path |
editorialid del objeto editorial 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 editorial con el editorialid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid asociado con una editorial editorialid |
Mensaje de error |
POST editorials/{editorialid}/books/{booksid}
Agrega a la colección de libros de la editorial con identificador editorialid
un objeto Book con identificador booksid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
editorialid |
Path |
editorialid del objeto editorial 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 editorial |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
OK |
Se agregó el libro a la colección |
404 |
No existe un objeto editorial con el editorialid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid dado |
Mensaje de error |
PUT editorials/{editorialid}/books
Remplaza la colección de objetos Book asociada con un objeto Editorial cuyo identificado es editorialid
.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
editorialsid |
Path |
ID del objeto Editorial 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 editorial con el editorialid dado |
Mensaje de error |
404 |
No existe alguno de los objetos book en la colección pasada por parámetro. |
Mensaje de error |
DELETE editorials/{editorialsid}/books/{booksid}
Remueve un objeto Book de la colección en un objeto Editorial.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
editorialid |
Path |
editorialid del objeto editorial 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 editorial |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
200 |
Objeto removido |
N/A |
404 |
No existe un objeto editorial con el editorialid solicitado |
Mensaje de error |
404 |
No existe un objeto book con el bookid asociado con una editorial editorialid |
Mensaje de error |
Servicios para el recurso Book
son:
GET /books
Retorna una colección de objetos Book en representación Detail.
Cada Book en la colección tiene embebidos los siguientes objetos: Editorial.
Parámetros
N/A
Respuesta
GET /books/{id}
Retorna una colección de objetos Book en representación Detail.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
id |
Path |
ID del objeto Book a consultar |
Sí |
Integer |
Respuesta
POST /books
Es el encargado de crear objetos Book.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
body |
body |
Objeto Book que será creado |
Sí |
|
|
Respuesta
Código |
Descripción |
Cuerpo |
200 |
El objeto Book ha sido creado |
|
|
PUT /books/{id}
Es el encargado de actualizar objetos Book.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
id |
Path |
ID del objeto Book a actualizar |
Sí |
Integer |
body |
body |
Objeto Book nuevo |
Sí |
|
|
Respuesta
Código |
Descripción |
Cuerpo |
201 |
El objeto Book actualizado |
|
|
404 |
No existe un Book con el id dado |
Mensaje de error |
DELETE /books/{id}
Elimina un objeto Book.
Parámetros
Nombre |
Ubicación |
Descripción |
Requerido |
Esquema |
id |
Path |
ID del objeto Book a eliminar |
Sí |
Integer |
Respuesta
Código |
Descripción |
Cuerpo |
204 |
Objeto eliminado |
N/A |
404 |
No existe un Book con el id dado |
Mensaje de error |