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/11 00:27]
admin [Ejercicios]
clase:daw:daw:1eval:tema04 [2024/11/22 18:35] (actual)
admin [4. El protocolo HTTP]
Línea 2: Línea 2:
 El protocolo HTTP se usa para enviar y recibir datos en la Web. El protocolo HTTP se usa para enviar y recibir datos en la Web.
  
-En los siguientes enlaces se hace una explicación de HTTP:+Mas información: 
 +  * [[https://datatracker.ietf.org/doc/html/rfc2616|RFC 2616 -- Hypertext Transfer Protocol -- HTTP/1.1]]
   * [[https://developer.mozilla.org/es/docs/Web/HTTP/Overview|Generalidades del protocolo HTTP]]: Explicación del HTTP   * [[https://developer.mozilla.org/es/docs/Web/HTTP/Overview|Generalidades del protocolo HTTP]]: Explicación del HTTP
   * [[https://blog.makeitreal.camp/el-protocolo-http/|El protocolo HTTP]]: Otra explicación del HTTP   * [[https://blog.makeitreal.camp/el-protocolo-http/|El protocolo HTTP]]: Otra explicación del HTTP
Línea 71: Línea 72:
   * ''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''   * ''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''
 +  * ''Content-Language'': El idioma de los datos que se envían. 
 +  * ''Content-Length'': Tamaño en bytes de los datos que se envían
  
  
Línea 85: Línea 87:
 <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.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.   * 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.
-  * 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+  * Por otro lado notar que ''Content-Type'', ''Content-Language'' y ''Content-Length'' 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 99: Línea 101:
  
 De entre todos los código están algunos que solemos ver a menudo: De entre todos los código están algunos que solemos ver a menudo:
-  * 204: La petición no retorna datos. +  * 200: Todo ha ido bien 
-  * 403: Prohibido el acceso al documento+  * 201: Se ha creado el recurso (Suele ser en un INSERT) 
 +  * 204: La petición no retorna datos. (Suele ser en un DELETE) 
 +  * 400: Los datos que ha enviado el cliente no son correctos 
 +  * 401: Hay que estar logueado 
 +  * 403: El usuario está logueado pero tiene Prohibido el acceso al documento
   * 404: No encuentra el documento   * 404: No encuentra el documento
   * 500: Error del servidor   * 500: Error del servidor
  
 +{{:clase:daw:daw:1eval:yahoo_http_error_codes.png|}}
 ===== Métodos ===== ===== Métodos =====
 Los métodos ( o verbos) HTTP indican que acción queremos hacer con los datos. Al navegar normalmente se usa siempre el ''GET''. Los métodos ( o verbos) HTTP indican que acción queremos hacer con los datos. Al navegar normalmente se usa siempre el ''GET''.
  
   * ''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 125: Línea 131:
   Accept-Language: fr   Accept-Language: fr
  
-El servidor **borrará** el fichero ''index.html'', por lo que con ''POST'' podríamos añadir una nueva página y con ''PUT'' borrar una página.+El servidor **borrará** el fichero ''index.html'', por lo que con ''POST'' podríamos añadir una nueva página y con ''DELETE'' borrar una página.
  
      
Línea 137: Línea 143:
 ^ Método HTTP ^ Descripción ^ Metodo CRUD ^ Metodo SQL ^ ^ Método HTTP ^ Descripción ^ Metodo CRUD ^ Metodo SQL ^
 | GET | Este método HTTP lo usaremos para cuando queremos leer datos del servidor | Read | SELECT | | GET | Este método HTTP lo usaremos para cuando queremos leer datos del servidor | Read | SELECT |
-| POST | Este método HTTP lo usaremos para añadir datos al servidor | Crear | INSERT |+| POST | Este método HTTP lo usaremos para añadir datos al servidor | Create | INSERT |
 | PUT | Este método HTTP lo usaremos para actualizar ((realmente es actualizar o insertar pero en este curso por simplificar, el POST solo actualizará)) datos del servidor | Update | UPDATE | | PUT | Este método HTTP lo usaremos para actualizar ((realmente es actualizar o insertar pero en este curso por simplificar, el POST solo actualizará)) datos del servidor | Update | UPDATE |
 | DELETE | Este método HTTP lo usaremos para borrar datos del servidor | Delete | DELETE | | DELETE | Este método HTTP lo usaremos para borrar datos del servidor | Delete | DELETE |
Línea 147: Línea 153:
  
 ^ Descripción ^ URL ^ Método HTTP ^ JSON Enviado ^ JSON Retornado ^ ^ Descripción ^ URL ^ Método HTTP ^ JSON Enviado ^ JSON Retornado ^
-| Obtener un usuario | ''/libro/{idUsuario}'' | GET | Ninguno | Usuario leido | +| Obtener un libro | ''/libro/{idLibro}'' | GET | Ninguno | Libro leido | 
-| Listado de usuarios | ''/libro'' | GET | Ninguno | Array de Usuarios +| Listado de libros | ''/libro'' | GET | Ninguno | Array de Libros 
-| Añadir un usuario | ''/libro'' | POST | Libro a insertar | Usuario insertado | +| Añadir un libro | ''/libro'' | POST | Libro a insertar | Libro insertado | 
-| Actualizar un usuario | ''/libro/{idUsuario}'' | PUT | Usuario a actualizar | Usuario actualizado | +| Actualizar un libro | ''/libro/{idLibro}'' | PUT | Libro a actualizar | Libro actualizado | 
-| Borrar un usuario | ''/libro/{idUsuario}'' | DELETE | Ninguno | Ninguno |+| Borrar un libro | ''/libro/{idLibro}'' | DELETE | Ninguno | Ninguno |
  
-Donde pone ''{idUsuario}'' se subtituiría por el id del Usuario.+Donde pone ''{idLibro}'' se subtituiría por el id del libro.
  
 El "JSON Enviado" es el JSON que se debe enviar con los datos al hacer esa petición. Como podemos ver solo se envía al insertar o al actualizar. Es decir es el JSON del usuario a insertar o el JSON con los nuevo datos del  usuario a modificar. El "JSON Enviado" es el JSON que se debe enviar con los datos al hacer esa petición. Como podemos ver solo se envía al insertar o al actualizar. Es decir es el JSON del usuario a insertar o el JSON con los nuevo datos del  usuario a modificar.
Línea 201: Línea 207:
   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 260: Línea 266:
  
 ==== Ejercicio 3 ==== ==== Ejercicio 3 ====
-Desde Firefox instala el plugin de [[https://addons.mozilla.org/es/firefox/addon/restclient/|RESTClient]].+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 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
Línea 266: Línea 272:
 ==== Ejercicio 4 ==== ==== Ejercicio 4 ====
 Modifica el servidor hecho en NodeJS de forma que: Modifica el servidor hecho en NodeJS de forma que:
-  * En la URL ''/usuario/3'' con un ''GET'' retorne los datos de un usuario (Te tienes que inventar los datos). Deberá permitir que sean en JSON o XML dependiendo de la cabecera "Accept"tambien habrá que tener en cuenta la cabecera ''Accept-Language'' , permitiendo la respuesta en castellano o inglés. +  * 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"también habrá que tener en cuenta la cabecera ''Accept-Language'' , permitiendo la respuesta en castellano o inglés. 
-  * En la URL ''/Usuario/4'' con un ''GET'' indique que no existe ese usuario +  * 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.1599776852.txt.gz · Última modificación: 2020/09/11 00:27 por admin