Herramientas de usuario

Herramientas del sitio


clase:daw:daw:1eval:tema04

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:daw:daw:1eval:tema04 [2020/09/10 20:41]
admin [Ejercicios]
clase:daw:daw:1eval:tema04 [2021/10/14 21:30] (actual)
admin [Ejercicios]
Línea 70: Línea 70:
   * ''Accept-Language'': El idioma en el que queremos que nos retorne los datos.. Luego el servidor los retornará en el idioma que quiera/pueda.   * ''Accept-Language'': El idioma en el que queremos que nos retorne los datos.. Luego el servidor los retornará en el idioma que quiera/pueda.
   * ''Host'': El dominio al que se está enviando la petición. Esta cabecera el muy útil ya que permite en un mismo servidor tener alojados varios dominios.   * ''Host'': El dominio al que se está enviando la petición. Esta cabecera el muy útil ya que permite en un mismo servidor tener alojados varios dominios.
 +  * ''Content-Type'': El formato de los datos que envian al servidor. Ej: En ''text/html'', en ''text/xml'', ''application/json'' , ''application/pdf'', etc. Y como están codificado. Normalmente los formatos son ''utf-8'' o ''ISO-8859-1''
  
  
Línea 83: Línea 84:
  
 <note> <note>
-La cabecera ''Content-Type'' es imporante para el programador ya que el servidor puede no saber exactamente el formato de los datos y es necesario que lo indiquemos nosotros.  +  * La cabecera ''Content-Type'' es imporante para el programador ya que el servidor puede no saber exactamente el formato de los datos y es necesario que lo indiquemos nosotros.Muchas veces hay ademas problemas con la codificación si es ''utf-8'' o ''ISO-8859-1'' por lo que también se debe indicar. 
-Muchas veces hay ademas problemas con la codificación si es ''utf-8'' o ''ISO-8859-1'' por lo que también se debe indicar.+  * Por otro lado notar que ''Content-Type'' se puede usar tanto en la petición como en la respuesta. Se usa en la petición si se envían datos en la petición
 </note> </note>
  
Línea 108: Línea 109:
  
   * ''GET'': Queremos obtener los datos   * ''GET'': Queremos obtener los datos
-  * ''POST'': Queremos actualziar los datos. +  * ''POST'': Queremos añadir los datos. 
-  * ''PUT'': Queremos añadir nuevos datos.+  * ''PUT'': Queremos actualizar nuevos datos.
   * ''DELETE'': Queremos borrar los datos.   * ''DELETE'': Queremos borrar los datos.
  
Línea 143: Línea 144:
  
 ==== La Estructura de la URL ==== ==== La Estructura de la URL ====
-Veamos la estructura de la URL de las peticiones en un supuesto ejemplo de una base de datos de libros.+Veamos la estructura de la URL de las peticiones en un supuesto ejemplo de una base de datos de usuarios.
  
 ^ Descripción ^ URL ^ Método HTTP ^ JSON Enviado ^ JSON Retornado ^ ^ Descripción ^ URL ^ Método HTTP ^ JSON Enviado ^ JSON Retornado ^
 | Obtener un libro | ''/libro/{idLibro}'' | GET | Ninguno | Libro leido | | Obtener un libro | ''/libro/{idLibro}'' | GET | Ninguno | Libro leido |
-| Listado de libros | ''/libro'' | GET | Ninguno | Array de libros |+| Listado de libros | ''/libro'' | GET | Ninguno | Array de Libros |
 | Añadir un libro | ''/libro'' | POST | Libro a insertar | Libro insertado | | Añadir un libro | ''/libro'' | POST | Libro a insertar | Libro insertado |
 | Actualizar un libro | ''/libro/{idLibro}'' | PUT | Libro a actualizar | Libro actualizado | | Actualizar un libro | ''/libro/{idLibro}'' | PUT | Libro a actualizar | Libro actualizado |
-| Borrar un usuario | ''/libro/{idLibro}'' | DELETE | Ninguno | Ninguno |+| Borrar un libro | ''/libro/{idLibro}'' | DELETE | Ninguno | Ninguno |
  
 Donde pone ''{idLibro}'' se subtituiría por el id del libro. Donde pone ''{idLibro}'' se subtituiría por el id del libro.
Línea 200: Línea 201:
   response.send('Hello from delete!');   response.send('Hello from delete!');
 }); });
-app.delete('/parada/38', (request, response) => {+app.delete('/libro/38', (request, response) => {
   response.status(200);   response.status(200);
-  response.send('Borrada parada 38');+  response.send('Borrado libro 38');
 }); });
-app.delete('/parada/39', (request, response) => {+app.delete('/libro/39', (request, response) => {
   response.status(404);   response.status(404);
-  response.send('La parada 39 no existe');+  response.send('El libro 39 no existe');
 }); });
    
Línea 216: Línea 217:
  
 ==== Ejercicio 1 ==== ==== Ejercicio 1 ====
 +Usando el programa [[https://www.putty.org/|putty]], puedes conectarte en con el tipo de conexión "raw" al puerto 80 de cualquier máquina y enviar texto al cualquier servidor.
 +
 +Debes conectarte al servidor "www.fpmislata.com" al puerto 80 y enviar el texto de una petición HTTP. Es decir escribir tal cual se envía una petición HTTP.
 +
 +  * Envía la petición HTTP sin cabeceras. ¿Porque ha fallado?
 +  * Añade ahora la cabecera ''Host'' y vuelve a enviar la petición. ¿Porque ahora funciona?. Indica las cabeceras que ha retornado y los datos.
 +  * Haz una nueva petición a la URL "/wordpress/secretaria/novedades-secretaria/". Comprueba que todo funciona.
 +
 +
 +
 +==== Ejercicio 2 ====
 En tu máquina debes instalar lo siguiente: En tu máquina debes instalar lo siguiente:
-  * Descargar el fichero {{biblioteca-original.json.zip|}} y descomprimelo. +  * Descargar el fichero {{biblioteca-original.json.zip|}} y descomprimelo. Mira el contenido del fichero ''biblioteca-original.json''
-  * Instalar el siguiente plugin de Firefox: [[https://addons.mozilla.org/es/firefox/addon/restclient/|REST ClientPlugin Firefox]] +  * Instala el servidor [[https://github.com/typicode/json-server|JSON Server]]
-  * Instalar el servidor [[https://github.com/typicode/json-server|JSON Server]]+
  
   npm install -g json-server   npm install -g json-server
Línea 231: Línea 242:
  
 <sxh json> <sxh json>
-{  +
-    "id": 1,  +  "id": 1, 
-    "title": "El señor de los anillos",  +  "title": "El señor de los anillos", 
-    "autor": 1,  +  "autor": 1, 
-    "genero":+  "genero": 1
 } }
 </sxh> </sxh>
  
 +Indica las siguientes  y datos:
 +
 +^  Descripción  ^  URL  ^  Datos enviados al Servidor  ^  Datos leidos del servidor 
 +| Obtener el libro de "La fundación" |    |    |    |
 +| Borrar el libro de "Yo Robot" |      |    |
 +| Obtener todos los libros |    |    |    |
 +| Añadir un nuevo  género llamado "Histórico" |    |    |    |
 +
 +
 +==== Ejercicio 3 ====
 +Desde Firefox instala el plugin de [[https://addons.mozilla.org/es/firefox/addon/restclient/|RESTClient]] o desde Chrome el plugin [[https://chrome.google.com/webstore/detail/yet-another-rest-client/ehafadccdcdedbhcbddihehiodgcddpl|Yet Another REST Client]]
 +
 +Lanza las URL del ejercicio anterior. Si hay datos de entrada los deberás enviar en el campo de "Body"  y añadir las cabeceras adecuadas
 +
 +==== Ejercicio 4 ====
 +Modifica el servidor hecho en NodeJS de forma que:
 +  * En la URL ''/libro/3'' con un ''GET'' retorne los datos de un libro (Te tienes que inventar los datos). Deberá permitir que sean en JSON o XML dependiendo de la cabecera "Accept" y también habrá que tener en cuenta la cabecera ''Accept-Language'' , permitiendo la respuesta en castellano o inglés.
 +  * En la URL ''/libro/4'' con un ''GET'' indique que no existe ese usuario
 +
 +<note tip>
 +Este ejercicio **no** tiene nada que ver con el ejercicio del JSON Server, se hace todo sobre el código de NodeJS de express.
 +</note>
  
clase/daw/daw/1eval/tema04.1599763272.txt.gz · Última modificación: 2020/09/10 20:41 por admin