User Tools

Site Tools


apuntes:servicios_web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
apuntes:servicios_web [2018/02/19 19:45] – [Definir la Base de Datos] Santiago Faciapuntes:servicios_web [2019/01/04 13:22] – external edit 127.0.0.1
Line 228: Line 228:
 </code> </code>
  
-> Recordad que todas las anotaciones Java en el ejemplo anterior son clases que pertenecen al paquete 'javax.persistence'. Tened cuidado de no importar las mismas clases que existen en otros paquetes, aunque estén relacionados con Spring.+**Recordad que todas las anotaciones Java en el ejemplo anterior son clases que pertenecen al paquete 'javax.persistence'. Tened cuidado de no importar las mismas clases que existen en otros paquetes, aunque estén relacionados con Spring**
  
 ==== El Acceso a la Base de Datos ==== ==== El Acceso a la Base de Datos ====
Line 335: Line 335:
 {{ youtube>TBIzVT5dHC4 }} \\ {{ youtube>TBIzVT5dHC4 }} \\
  
 +==== Depuración de Servicios Web ====
 +
 +La primera aproximación a la hora de depurar los Servicios Web desarrollados es utilizar el navegador introduciendo las URLs esperando obtener la salida apropiada y comprobar asi que todo funciona correctamente. Es bastante cómodo pero fácil de usar y eficiente, hasta un punto.
 +
 +Si lo que queremos es depurar totalmente, y de una forma profesional, nuestros Servicios Web, tenemos que usar aplicaciones destinadas para ese propósito, como [[https://www.getpostman.com|Postman]], que es una aplicación destinada exclusivamente a testear APIs.
 +
 +<figure>
 +{{ postman.png }}
 +<caption>Postman</caption></figure>
 ===== Consumir un servicio web desde Django ===== ===== Consumir un servicio web desde Django =====
  
Line 340: Line 349:
  
 <code bash> <code bash>
-santi@zenbook:$ pip3 install djangorestframework+santi@zenbook:$ pip3 install djangorestframework requests
 </code> </code>
  
Line 354: Line 363:
 </file> </file>
  
-En nuestro caso vamos a concectar con un servicio web que ofrece datos sobre opiniones de usuarios de forma que obtenemos, entre otros, un titulo, un texto y una puntuación. Entonces crearemos un modelo de datos ''Opinion'' para almacenar dicha información en forma de objeto.+En nuestro caso vamos a concectar con un servicio web que ofrece datos sobre opiniones de usuarios de forma que obtenemos, entre otros, un titulo, un texto y una puntuación. Entonces crearemos un modelo de datos ''Opinion'' para almacenar dicha información en forma de objeto (suponemos, para este ejemplo, que guardamos en las opiniones el título de la pelicula de dicha opinion, por lo que en el servicio web que hicieramos también deberíamos añadirlo. En el ejemplo de clase no aparece).
  
 <file python models.py> <file python models.py>
Line 362: Line 371:
     texto = models.CharField(max_length=200)     texto = models.CharField(max_length=200)
     puntuacion = models.IntegerField     puntuacion = models.IntegerField
 +    pelicula = models.CharField(max_length=200)
 . . . . . .
 </file> </file>
Line 374: Line 384:
 class OpinionSerializer(serializers.ModelSerializer): class OpinionSerializer(serializers.ModelSerializer):
     class Meta:     class Meta:
-        fields = ('titulo', 'texto', 'puntuacion')+        fields = ('titulo', 'texto', 'puntuacion', 'pelicula')
         model = Opinion         model = Opinion
 </file> </file>
 +
 +Desde Django podríamos acceder al servicio web para listar todas las opiniones:
 +
 +<file python views.py>
 +import requests
 +. . .
 +def opiniones(request):
 +    ws = requests.get('http://localhost:8080/opiniones')
 +    json = ws.json()
 +    serializer = OpinionSerializer(data=json, many=True)
 +    if serializer.is_valid():
 +        lista_opiniones = serializer.save()
 +        context = {'lista_opiniones': lista_opiniones}
 +        return render(request, 'peliculas/opiniones.html', context)
 +    else:
 +        print(serializer.errors)
 +
 +    return render(request, 'peliculas/index.html')
 +. . .
 +</file>
 +
 +O bien acceder a las opiniones para una pelicula determinada, pasando como parámetro el nombre de la película (en este caso):
  
 <file python views.py> <file python views.py>
Line 408: Line 440:
 . . . . . .
 </code> </code>
 +
 +===== Seguridad en Servicios Web =====
  
 ---- ----
apuntes/servicios_web.txt · Last modified: 2021/10/21 06:56 by Santiago Faci