presentación de powerpoint - uniandesisis2603/dokuwiki/lib/exe… · 23 la clase system se utiliza...

Post on 27-May-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arquitectura REST

Grupo de Construcción de Sw

1

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

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

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

6

Request

Response

7

Elementos

Lo más importante: recursos

10

Elementos

Lo más importante: recursos

11

Se pueden

localizar de

manera única

Pueden tener

distintas

representaciones

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

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

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

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

Principios de diseño REST

Los recursos deben encadenar otros

recursos: proveer hyperlinks para obtener

más detalles

16

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

Diseño de un API Rest

Pensar en las entidades principales de la

aplicación como colecciones de recursos.

/products

/customers

/orders

18

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

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

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

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

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

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

Recursos y representaciones

25

GET /curstomers/:id_customer

Devuelve la

representación del

recurso customer

identificado por el

id_customer

Representación JSON

Recursos y representaciones

26

GET /customers

Devuelve un arreglo de

representaciones del

recurso customer

Recursos y representaciones

27

DELETE /curstomers/:id_customer

Borra el recurso

customer identificado por

el id_customer

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

top related