Práctica 2
Métodos REST
Objetivo general y específico
Utilización de métodos REST mediante diferentes herramientas y mecanismos en un API pública.
En específico ocupar la API RESTful pública JSONPlaceholder para probar operaciones CRUD
(Create Read Update Delete) sobre recursos simulados
GET (Read)
Mediante algún navegador web acceder a la URL (Uniform Resource Locator)
[Link] y observar la salida.
chrome edge firefox safari
PREGUNTAS
1. Es la misma salida en todos los navegadores?
2. De qué tipo o formato de archivo es la respuesta?
3. Cuántas son las llaves que aparecen en la respuesta y de qué tipo/valor son?
4. Si la URL se cambia (por ejemplo) a [Link] existe
algún cambio?; si la respuesta es SI, qué llave/clave?
5. Cuántos “id” se tienen por cada “userId?
6. Hacer la petición original a través de cURL y observar si existe algún cambio
7. De la misma forma, hacer la petición mediante Postman, y comparar la salida
VS Code
En VS Code instalar la extensión “Thunder client”
8. Cómo se presenta/define “Thunder Client” ?
Notar que posterior a la instalación se crea un icono en la parte izquierda de VS Code.
Dar click sobre el icono y hacer un “New Request” de la URL original (método GET). A
continuación observar la salida
Fetch
async/await
En la página [Link] ubicar la siguiente información
El código describe una forma de hacer peticiones GET.
Ejecutar Run script sobre la misma página web y observar la salida
Considerando la salida, explicar este código de javascript
Cómo ejecutar/correr este código “in a console” ?
Cómo ejecutar/correr este código en “or from any site” ?
Finalmente apoyado por la IA, investigar la versión async/await del mismo código
Hacer una comparación/descripción del código fetch vs async/await
POST (Create)
curl
Hacer uso del método POST para crear un nuevo “post” o nota. Recordar que el “ id” esta
relacionado con el post.
curl -X POST [Link] \
-H "Content-Type: application/json" \
-d '{"title": "Hola", "body": "Contenido", "userId": 1}'
Deducir el uso de curl, -X, -H y -d ?
Ejecutar en una terminal la petición
Observar la salida
Cambiar el “userId” a 15
Ejecutar la petición y observar la salida
Cuál es la interpretación?
Si no es clara la interpretación, ejecutar una petición GET sobre el mismo recurso
curl [Link]
Se puede hacer la interpretación ahora ?
thunder client
Hacer la adaptación en thunder de la petición GET realizada previamente con curl
Además de que la salida/respuesta es la misma, cuál es el código/Status obtenido?
Hacer ahora la adaptación completa de la petición POST, cuál es el código/Status obtenido?
observar el “id” obtenido en la respuesta, quién lo asigna o genera?
PUT (Update)
Continuando con Thunder, hacer un PUT (actualización) que modifique el post 23. Lo anterior
mediante una petición al recurso
[Link]
Con el JSON de entrada
{
"id": 23,
"title": "Título actualizado",
"body": "Contenido actualizado",
"userId": 1
}
Cuál es la respuesta y con que status/código?
Si en el JSON de entrada, se cambia el “id” de 23 a 24 se obtiene la misma respuesta?
Tendrá sentido o será neceario la llave “id” en el JSON de entrada?
Probar omitiendo el “id” en el JSON de entrada, y observar si hay un error o algo diferente
Haciendo una comparación de este JSON de respuesta, es diferente o igual al JSON de
respuesta obtenido al principio de la sección
Finalmente enviar el JSON sin la llave “title”, es decir:
{
"id": 23,
"body": "Contenido actualizado",
"userId": 1
}
Cuantos pares llave-valor se obtienen?; tres o cuatro?
PATCH
Reelanzar la petición previa (JSON con 3 llaves - sin llave “title”) pero ahora con el método PATCH
Cuantos pares llave-valor se obtienen?, tres o cuatro?
Cual es la explicación o razón?
DELETE (Delete)
Por último hacer uso del método DELETE en el recurso
[Link]
Con el JSON de entrada
{
"id": 23,
"title": "Título actualizado",
"b d " "C t id t li d "
"body": "Contenido actualizado",
"userId": 1
}
Observar la salida
Existe algún cambio si se omite el JSON de entrada?, Por qué?