Diferencia entre revisiones de «PHP Servizos Web»
Ir a la navegación
Ir a la búsqueda
(u) |
|||
Línea 1: | Línea 1: | ||
+ | |||
+ | == Introdución == | ||
* [http://blog.architexa.com/2010/11/rest-architecture-simplified/ Arquitectura REST]. | * [http://blog.architexa.com/2010/11/rest-architecture-simplified/ Arquitectura REST]. | ||
Línea 14: | Línea 16: | ||
* [http://www.apañados.es/tenemos-que-apanar/internet-tutoriales-y-trucos/146-40-apis-utiles-disenadores-desarrolladores-web.html Exemplos de APIs en Internet] | * [http://www.apañados.es/tenemos-que-apanar/internet-tutoriales-y-trucos/146-40-apis-utiles-disenadores-desarrolladores-web.html Exemplos de APIs en Internet] | ||
+ | |||
+ | |||
+ | == Servizo REST == | ||
+ | : Información obtida [http://www.i2factory.com/es/integracion/qu%C3%A9-es-un-servicio-restful deste enlace]. | ||
+ | |||
+ | * REST é o acrónimo de <b>Re</b>presentational <b>S</b>tate <b>T</b>ransfer. | ||
+ | |||
+ | |||
+ | * Para que sexa considerado REST ten que cumprir estas características: | ||
+ | :* Baseado nun protocolo de cliente/servidor sen estado (protocolo Http) | ||
+ | :* Cacheable | ||
+ | :* Escalable | ||
+ | :* Con unhas operacións ben definidas no que os recursos estean identificados de forma única por [https://es.wikipedia.org/wiki/Identificador_de_recursos_uniforme URIs]. | ||
+ | |||
+ | |||
+ | * Ao utilizar o protocolo HTTP, xa vimos que non garda o estado polo que deberemos de enviar os datos necesarios para a autenticación en cada petición que fagamos. | ||
+ | |||
+ | |||
+ | * Cada petición que fagamos levará asociada o uso dun '''verbo''' que indicará un tipo de acción a realizar: | ||
+ | :* GET: Utilízase para acceder a un recurso | ||
+ | :* POST: Envía datos para crear un recurso. Os datos non van na URI, se non no corpo da mensaxe. | ||
+ | :* PUT: Utilizado para editar un recurso. | ||
+ | :* DELETE: Elimina un recurso | ||
+ | :* PATCH: Utilízase para modificar parcialmente un recurso. Normalmente faise con PUT. | ||
+ | |||
+ | |||
+ | * Cando fagamos algunha das operacións anteriores deberemos de informar a quen fixo a petición do éxito ou fracaso da operación. Non existe un estándar que nos obrigue a utilizar uns códigos ou outros, pero '''deberemos de aproveitar' os código HTML para facilitar o 'consumo' do noso servizo REST: | ||
+ | :* 200 → OK : Petición recibida e procesada de forma correcta | ||
+ | :* 201 → Created : Petición completada. Creouse un novo recurso | ||
+ | :* 204 → No Content: Petición procesada correctamente, pero a resposta non ten ningún contido | ||
+ | :* 401 → Unauthorized: A información de autenticación non é válida | ||
+ | :* 404 → Not found: O recurso non se atopou. | ||
+ | |||
+ | |||
+ | * Cacheable: | ||
+ | : Isto quere dicir que ten que ter a posibilidade de poder 'cachear' os resultados para ter un mellor desempeño. | ||
+ | : As peticións deben indicar se o resultado pode ou non ser cacheado. | ||
+ | |||
+ | |||
+ | * Escalable: | ||
+ | : O servidor encargado de recibir e procesar as respostas debe ser capaz de ser dividido en capas (cada capa se encargará de procesar as peticións de diferentes recursos). Desta forma podemos ter diferentes políticas de seguridade. | ||
+ | |||
+ | |||
+ | * Identificación de recursos mediante URIs: | ||
+ | : Normalmente un servizo REST vai permitir realizar operacións de consulta, actualización, engadir e borrado sobre diferentes elementos de informacións. Es estes elementos denomínanse '''recursos''' (por exemplo, engadir un novo libro se xestionamos unha librería, obter o listado de clientes, obter o prezo de todas as pantallas de 14'' se xestionamos unha tenda de computadores,...). | ||
+ | : Cando fagamos unha operación sobre un destes recursos, temos que utilizar unha URI que deberá cumprir as seguintes propiedades: | ||
+ | :* Deben ser únicas, non pode existir máis dunha URI para identificar o mesmo recurso. | ||
+ | :* Deben ser independentes do formato no que queiramos consultar el recurso (a URI debe ser a mesma se devolvemos a información en JSON ou XML, por exemplo) | ||
+ | :* Deben manter una xerarquía na ruta do recurso | ||
+ | :* No deben indicar accións, polo que <u>non debemos usar verbos á hora de definir unha URI</u> (como viñamos facendo nas aplicacións WEB) | ||
+ | |||
+ | |||
+ | : Por exemplo, se queremos xestionar un recurso 'libros': | ||
+ | :* '''POST''' http://meusitio.es/libros → Para crear un libro | ||
+ | :* '''GET''' http://meusitio.es/libros/{id} → Para obter a información dun libro concreto | ||
+ | :* '''PUT''' http://meusitio.es/libros/{id} → Para modificar os datos dun libro concreto | ||
+ | :* '''DELETE''' http://meusitio.es/libros/{id} → Para eliminar un libro concreto | ||
+ | :* '''GET''' http://meusitio.es/libros → Para obter o listado de libros. | ||
+ | |||
+ | |||
+ | :<u>Nota:</u> Normalmente o recurso estará en minúsculas e en plural a no ser que o recurso sexa único (por exemplo a configuración). | ||
+ | |||
+ | : En caso de querer '''filtrar''' os recursos faremos uso da URI e enviaremos a información de filtrado usando parámetros da forma: ?param1=valor1¶m2=valor. | ||
+ | : Por exemplo, se queremos obter a lista de libros de informática: http://meusitio.es/libros'''?tematica=informatica'''. | ||
+ | |||
+ | : Temos que ter coidado coa xerarquía de recursos e acceder atendendo a dita xerarquía. | ||
+ | : Así se xestiono varias tendas de libros, o acceso a un libro dunha tenda debería ser: http://meusitio.es/tendas/1/libros/5 e non ao revés (http://meusitio.es/libros/5/tendas/1). | ||
+ | |||
+ | |||
+ | : Outras características que deberían cumprir as URI's: | ||
+ | :* Utilizar minúsculas y guións ou guións baixos (snake-case) no canto de maiúsculas y minúsculas (CamelCase) | ||
+ | :* Non utilizar caracteres que necesiten codificación URL como por exemplo espazos en branco, comillas, etc. | ||
+ | :* Non utilizar parámetros de consulta (?tipo=1) en peticións que no sexan de consulta. | ||
+ | |||
+ | |||
+ | * Formato de resposta: | ||
+ | |||
+ | : Normalmente o formato vai ser XML ou JSON. | ||
+ | : Como comentamos anteriormente na URI non debe ir ningunha información sobre o tipo de formato da resposta. | ||
+ | : O tipo de formato da resposta será indicado na cabeceira da petición. | ||
+ | |||
+ | |||
+ | |||
+ | |||
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2016). | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2016). |
Revisión del 06:36 17 abr 2017
Introdución
- Arquitectura REST.
- Arquitectura REST e regras que debería cumprirse.
- Que é un servizo REST (en español) e regras que debe cumprir.
- Neste manual non aplica ben as regras para que sexa Rest (os código de erro de resposta HTTP).
Servizo REST
- Información obtida deste enlace.
- REST é o acrónimo de Representational State Transfer.
- Para que sexa considerado REST ten que cumprir estas características:
- Baseado nun protocolo de cliente/servidor sen estado (protocolo Http)
- Cacheable
- Escalable
- Con unhas operacións ben definidas no que os recursos estean identificados de forma única por URIs.
- Ao utilizar o protocolo HTTP, xa vimos que non garda o estado polo que deberemos de enviar os datos necesarios para a autenticación en cada petición que fagamos.
- Cada petición que fagamos levará asociada o uso dun verbo que indicará un tipo de acción a realizar:
- GET: Utilízase para acceder a un recurso
- POST: Envía datos para crear un recurso. Os datos non van na URI, se non no corpo da mensaxe.
- PUT: Utilizado para editar un recurso.
- DELETE: Elimina un recurso
- PATCH: Utilízase para modificar parcialmente un recurso. Normalmente faise con PUT.
- Cando fagamos algunha das operacións anteriores deberemos de informar a quen fixo a petición do éxito ou fracaso da operación. Non existe un estándar que nos obrigue a utilizar uns códigos ou outros, pero deberemos de aproveitar' os código HTML para facilitar o 'consumo' do noso servizo REST:
- 200 → OK : Petición recibida e procesada de forma correcta
- 201 → Created : Petición completada. Creouse un novo recurso
- 204 → No Content: Petición procesada correctamente, pero a resposta non ten ningún contido
- 401 → Unauthorized: A información de autenticación non é válida
- 404 → Not found: O recurso non se atopou.
- Cacheable:
- Isto quere dicir que ten que ter a posibilidade de poder 'cachear' os resultados para ter un mellor desempeño.
- As peticións deben indicar se o resultado pode ou non ser cacheado.
- Escalable:
- O servidor encargado de recibir e procesar as respostas debe ser capaz de ser dividido en capas (cada capa se encargará de procesar as peticións de diferentes recursos). Desta forma podemos ter diferentes políticas de seguridade.
- Identificación de recursos mediante URIs:
- Normalmente un servizo REST vai permitir realizar operacións de consulta, actualización, engadir e borrado sobre diferentes elementos de informacións. Es estes elementos denomínanse recursos (por exemplo, engadir un novo libro se xestionamos unha librería, obter o listado de clientes, obter o prezo de todas as pantallas de 14 se xestionamos unha tenda de computadores,...).
- Cando fagamos unha operación sobre un destes recursos, temos que utilizar unha URI que deberá cumprir as seguintes propiedades:
- Deben ser únicas, non pode existir máis dunha URI para identificar o mesmo recurso.
- Deben ser independentes do formato no que queiramos consultar el recurso (a URI debe ser a mesma se devolvemos a información en JSON ou XML, por exemplo)
- Deben manter una xerarquía na ruta do recurso
- No deben indicar accións, polo que non debemos usar verbos á hora de definir unha URI (como viñamos facendo nas aplicacións WEB)
- Por exemplo, se queremos xestionar un recurso 'libros':
- POST http://meusitio.es/libros → Para crear un libro
- GET http://meusitio.es/libros/{id} → Para obter a información dun libro concreto
- PUT http://meusitio.es/libros/{id} → Para modificar os datos dun libro concreto
- DELETE http://meusitio.es/libros/{id} → Para eliminar un libro concreto
- GET http://meusitio.es/libros → Para obter o listado de libros.
- Nota: Normalmente o recurso estará en minúsculas e en plural a no ser que o recurso sexa único (por exemplo a configuración).
- En caso de querer filtrar os recursos faremos uso da URI e enviaremos a información de filtrado usando parámetros da forma: ?param1=valor1¶m2=valor.
- Por exemplo, se queremos obter a lista de libros de informática: http://meusitio.es/libros?tematica=informatica.
- Temos que ter coidado coa xerarquía de recursos e acceder atendendo a dita xerarquía.
- Así se xestiono varias tendas de libros, o acceso a un libro dunha tenda debería ser: http://meusitio.es/tendas/1/libros/5 e non ao revés (http://meusitio.es/libros/5/tendas/1).
- Outras características que deberían cumprir as URI's:
- Utilizar minúsculas y guións ou guións baixos (snake-case) no canto de maiúsculas y minúsculas (CamelCase)
- Non utilizar caracteres que necesiten codificación URL como por exemplo espazos en branco, comillas, etc.
- Non utilizar parámetros de consulta (?tipo=1) en peticións que no sexan de consulta.
- Formato de resposta:
- Normalmente o formato vai ser XML ou JSON.
- Como comentamos anteriormente na URI non debe ir ningunha información sobre o tipo de formato da resposta.
- O tipo de formato da resposta será indicado na cabeceira da petición.
-- Ángel D. Fernández González -- (2016).