unidades:10_servidor:01_rest
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:10_servidor:01_rest [2014/08/30 11:19] – [Tratamiendo de errores] admin | unidades:10_servidor:01_rest [2014/10/13 09:32] (actual) – [Referencias] admin | ||
|---|---|---|---|
| Línea 21: | Línea 21: | ||
| Los datos que se envían es una petición HTTP son: | Los datos que se envían es una petición HTTP son: | ||
| * La URI del recurso que se pide. | * La URI del recurso que se pide. | ||
| + | * El método HTTP | ||
| * Las cabeceras HTTP. Hay gran cantidad de cabeceras pero su formato es siempre el nombre de la cabecera y su valor. | * Las cabeceras HTTP. Hay gran cantidad de cabeceras pero su formato es siempre el nombre de la cabecera y su valor. | ||
| * El cuerpo de la petición con los datos del usuario. Por ejemplo datos en formato JSON o datos en formato XML. | * El cuerpo de la petición con los datos del usuario. Por ejemplo datos en formato JSON o datos en formato XML. | ||
| Línea 42: | Línea 43: | ||
| * El formato de los datos | * El formato de los datos | ||
| * El estado de la aplicación | * El estado de la aplicación | ||
| - | * La paginación | + | * Cache |
| + | * Etc. | ||
| ===== Las operaciones a realizar ===== | ===== Las operaciones a realizar ===== | ||
| Línea 101: | Línea 103: | ||
| Una posible modificación que vi en un proyecto real consistía en hacer que el update y el insert no retornaran el objeto completo actualizado o insertado. Y no lo retornaban para ahorra tiempo y ancho de banda. Solo se retornaba en id del objeto recién insertado. Luego si hacía falta todos los datos , cosa que no solía necesitarse, | Una posible modificación que vi en un proyecto real consistía en hacer que el update y el insert no retornaran el objeto completo actualizado o insertado. Y no lo retornaban para ahorra tiempo y ancho de banda. Solo se retornaba en id del objeto recién insertado. Luego si hacía falta todos los datos , cosa que no solía necesitarse, | ||
| </ | </ | ||
| + | |||
| + | |||
| ===== Tratamiendo de errores ===== | ===== Tratamiendo de errores ===== | ||
| Línea 109: | Línea 113: | ||
| {{: | {{: | ||
| + | Controlar todos estos códigos en la aplicación es un poco excesivo, así que nosotros vamos a simplificar el números de códigos que retornará nuestra aplicación. | ||
| + | |||
| + | Primero empecemos con solo 3 códigos: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | El siguiente código útil es '' | ||
| + | |||
| + | Los códigos '' | ||
| + | |||
| + | El código '' | ||
| + | |||
| + | Así que resumiendo en nuestra aplicación solo deberíamos retornar los siguientes códigos: | ||
| + | |||
| + | ^ Código | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | REST no dice nada sobre que datos retornar cuando hay algún problema como es en el caso del '' | ||
| + | |||
| + | En caso de '' | ||
| + | |||
| + | En caso del '' | ||
| + | |||
| + | La estructura de la clase '' | ||
| + | <sxh java> | ||
| + | public class BussinessMessage | ||
| + | private final String fieldName; | ||
| + | private final String message; | ||
| + | |||
| + | public BussinessMessage(String fieldName, String message) { | ||
| + | this.fieldName = fieldName; | ||
| + | this.message = message; | ||
| + | } | ||
| + | | ||
| + | public String getFieldName() { | ||
| + | return fieldName; | ||
| + | } | ||
| + | |||
| + | public String getMessage() { | ||
| + | return message; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | Mas información sobre esta clase la puedes encontrar en mi curso de hibernate en [[http:// | ||
| + | |||
| + | ===== El formato de los datos ===== | ||
| + | Como ya dijimos al ver el formato de las URI, para indicar el formato en el que queremos que nos retornen los datos hay que usar la cabecera '' | ||
| + | |||
| + | Por otro lado cuando insertamos o actualizamos , estamos enviando datos en formato JSON, ¿Como le decimos al servidor que son en formato JSON? Usando la cabecera '' | ||
| + | |||
| + | Al retornarnos el servidor los datos también incluirá en la respuesta otra cabecera '' | ||
| + | |||
| + | Vamos ahora a resumir las cabeceras que hay al hacer una petición y recibir la respuesta: | ||
| + | * En la petición: | ||
| + | * '' | ||
| + | * '' | ||
| + | * En la respuesta: | ||
| + | * '' | ||
| + | |||
| + | Como ya hemos dicho, en la petición no tendremos que preocuparnos de poner estas cabeceras ya que AngularJS ya lo hace pero en la respuesta nosotros deberemos desde Java indicar el '' | ||
| + | |||
| + | ===== El estado de la aplicación ===== | ||
| + | El tema del estado de la aplicación en el servidor es muy sencillo de tratar en REST. Simplemente nunca hay estado en el servidor para cada cliente. Cada petición debe ser independiente de las demas y nunca guardar nada en la sesión del servidor. | ||
| + | |||
| + | Aunque esto es la teoría , yo personalmente si que guardo en la sesión el usuario que ha entrado en el sistema aunque se podría crear una solución **similar** | ||
| + | |||
| + | |||
| + | ===== Cache ===== | ||
| + | Al ser una petición REST como cualquier otra petición a una página web deberíamos tener en cuenta que las peticiones se pueden cachear en el navegador o en cualquier otro punto de la red. Por ello en general es adecuado indicar desde el servidor si la respuesta puede ser o no cacheada. | ||
| + | |||
| + | ===== Otras características ===== | ||
| + | Siguiente HTTP podríamos ver mas cosas como por ejemplo como hacer la paginación, | ||
| + | |||
| + | |||
| + | ====== Referencias ====== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
unidades/10_servidor/01_rest.1409390362.txt.gz · Última modificación: por admin
