25
Arquitectura REST Grupo de Construcción de Sw 1

Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Arquitectura REST

Grupo de Construcción de Sw

1

Page 2: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Referencias

http://www.infoq.com/resource/minibooks/emag-

03-2010-rest/en/pdf/ResteMag.pdf

https://www.ics.uci.edu/~fielding/pubs/dissertatio

n/fielding_dissertation.pdf

http://www.xfront.com/REST-Web-Services.html

http://www.vinaysahni.com/best-practices-for-a-

pragmatic-restful-api#requirements

http://www.restapitutorial.com/

2

Page 3: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Qué es REST?

Roy Fielding acuñó el término REST en su

tesis doctoral en el 200:

REST = Representational State Transfer

REST es un estilo arquitectural

HTTP Rest es una forma de implementarlo

3

Page 4: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

5

La web

En los sitios

hay recursos

que son

accedidos

utilizando una

url que los

identifica de

manera única y

aa través del

protocolo HTTP

Request

Response

Page 5: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

6

Request

Response

Page 6: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

7

Page 7: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Elementos

Lo más importante: recursos

10

Page 8: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Elementos

Lo más importante: recursos

11

Se pueden

localizar de

manera única

Pueden tener

distintas

representaciones

Page 9: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Elementos

Lo más importante: recursos

12

Se pueden

localizar de

manera única

Pueden tener

distintas

representaciones

http://example.com/customers/1234

http://example.com/orders/2007/10/776654

http://example.com/products/4554

Page 10: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Operaciones

Transferir una representación del recurso de

un lado para otro en la red

Modificar un recurso o Crear un recurso

Las operaciones son sin estado (no se sabe

qué pasó antes)

13

Page 11: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Principios de diseño REST

Identificar las entidades conceptuales que se

quieren exhibir como servicios

Crear una URL para cada recurso. Los

recursos son sustantivos NO VERBOS

Ejemplo de una mala definición:

http://www.parts-depot.com/parts/getPart?id=00345

Corrección:

http://www.parts-depot.com/parts/00345

14

Page 12: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Principios de diseño REST

Categorizar los recursos de acuerdo con:

El cliente recibirá una representación del recurso

(HTTP GET)

El cliente modificará o creará el recurso (HTTP

POST, PUT, y/o DELETE).

Todos los recursos que se accedan vía

HTTP GET no deben tener efecto de borde

(solo trae una representación del recurso) .

15

Page 13: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Principios de diseño REST

Los recursos deben encadenar otros

recursos: proveer hyperlinks para obtener

más detalles

16

Page 14: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

17

Método URI Acción Parámetros Cuerpo Retorno

GET /booksObtener todos los objetos

JSON de Book (RETRIEVE)

@QueryParam page: página

a consultar

@QueryParam

maxRecords: cantidad de

registros a consultar

Si se omite alguno de estos

parámetros se obtiene todos

los registros en la base de

datos

Colección de objetos

JSON Book y el total

de registros en la

base de datos en el

header X-Total-

Count

GET /books/:id

Obtener los atributos de una

instancia de Book en formato

JSON(RETRIEVE)

@PathParam id:

Identificador del registro

Objeto JSON con

detalle de la

instancia de Book

POST /booksCrear una nueva instancia de la

entidad Book (CREATE)

Objeto

JSON de

Book a

crear

Objeto JSON de

Book creado

PUT /books/:idActualiza una instancia de la

entidad Book (UPDATE)

@PathParam id:

Identificador del registro

Objeto

JSON de

Book

Objeto JSON de

Book actualizado

DELETE /books/:idBorra instancia de Book en el

servidor (DELETE)

@PathParam id:

Identificador del registro

Page 15: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Diseño de un API Rest

Pensar en las entidades principales de la

aplicación como colecciones de recursos.

/products

/customers

/orders

18

Page 16: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Diseño de un API Rest

Sobre una colección se puede traer todos los

elementos de la colección, traer un elemento

particular, agregar un elemento particular,

Borrar un elemento.

Los elementos en las colecciones deben

tener una representación.

19

Page 17: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Nombramiento de los recursos

Los APIs REST se escriben para los clientes

que van a consumir los servicios.

El nombre y la estructura de los URIs deben

transmitir un significado claro y no ambiguo a

esos consumidores.

Diseñar para sus clientes, no para sus datos.

20

Tomado de: http://www.restapitutorial.com/lessons/restfulresourcenaming.html

Page 18: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Nombramiento de los recursos

Requerimientos:

1. Dentro de un conjunto de servicios, cada

recurso debe tener al menos un URI que lo

identifique.

2. El URI debe tener sentido y describir

adecuadamente el recurso.

3. Los URIs debe seguir una estructura predecible,

jerárquica para mejorar el entendimiento y

facilitar su uso.

21

Tomado de: http://www.restapitutorial.com/lessons/restfulresourcenaming.html

Page 19: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Nombramiento de los recursos

5. Deber ser predecible en el sentido de que son

coherentes

6. Debe ser jerárquica en el sentido de que la

estructura de los datos tiene relaciones.

7. Esta no es una regla REST o restricción, pero

mejora la API.

22

Tomado de: http://www.restapitutorial.com/lessons/restfulresourcenaming.html

Page 20: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

23

La clase System se utiliza para poder nombrar las colecciones que pueden ser

accedidas de forma directa

URI Significado

/customers La colección de recursos de tipo

Customer.

/customers/33452/ El Customer 33452

/orders La colección de todas las ordenes en

el sistema

/orders/1234 La Orden 1234

/customers/33452/orders La colección de todas las ordenes del

Customer 33452

/orders/1234/items La colección de todos los Item de la

Orden 1234

Page 21: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

24

Método Significado

GET /customers Retorna la colección de recursos de tipo Customer.

POST /customers Crea un nuevo Customer

PUT /customers No se usa

DELETE /customers No se usa

GET /customers/33452/ Retorna el Customer 33452

GET|PUT|DELETE /customers/33452/ Crea, actualiza o elimina el Customer 33452

POST /customers/33452/ No se usa

GET /customers/33452/orders La colección de todas las ordenes del Customer 33452

POST /customers/33452/orders Crea una nueva Order para el Customer 33452

GET /customers/33452/orders/1234 Retorna la Order 1234 del Customer 3452

Page 22: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Recursos y representaciones

25

GET /curstomers/:id_customer

Devuelve la

representación del

recurso customer

identificado por el

id_customer

Representación JSON

Page 23: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Recursos y representaciones

26

GET /customers

Devuelve un arreglo de

representaciones del

recurso customer

Page 24: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Recursos y representaciones

27

DELETE /curstomers/:id_customer

Borra el recurso

customer identificado por

el id_customer

Page 25: Presentación de PowerPoint - Uniandesisis2603/dokuwiki/lib/exe… · 23 La clase System se utiliza para poder nombrar las colecciones que pueden ser accedidas de forma directa URI

Recursos y representaciones

28

POST /curstomers

Parámetro: {“firstName”:“Juan”,

“lastName”: “Perez”,

”age”:30}

Crea un nuevo recurso

customer, con la

información pasada por

parámetro y regresa el id

correspondiente