File size: 15,234 Bytes
53aaa34 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 | WEBVTT
00:00.000 --> 00:05.560
Veamos entonces cómo podemos hacer una
petición y empezar a interactuar con lo
00:05.560 --> 00:09.100
que nos trae esa petición. Vamos a venir aquí,
vamos a hacer un poco
00:09.100 --> 00:17.060
más chico nuestro editor. Venimos a
nuestro navegador. Ok. Aquí tienes el HTML.
00:17.060 --> 00:23.620
Vamos a cerrarlo y venimos aquí a nuestro
JavaScript. Con nuestro JavaScript, lo
00:23.620 --> 00:27.540
primero que queremos hacer es, ya que
tenemos una petición, acabamos de hacer
00:27.540 --> 00:32.980
un fetch, vamos a ver de qué forma podemos
escalar más. Si vamos a estar
00:32.980 --> 00:38.980
haciendo diferentes peticiones como un GET,
tipo un GET, tipo un POST, tipo un DELETE,
00:38.980 --> 00:43.340
de qué forma podemos ir escalando cada una
de estas peticiones. Lo que yo haría
00:43.340 --> 00:49.500
sería empezaríamos con una función que se
va a llamar,
00:49.500 --> 01:01.460
por ejemplo, sendHttpRequest. Y esta va a
ser la función que mandaríamos llamar
01:01.460 --> 01:06.540
para poder hacer las peticiones. Esta
función va a llevar
01:06.540 --> 01:12.020
tres parámetros. El primer parámetro va a
ser el método, el método que se va a
01:12.020 --> 01:17.500
utilizar. El segundo parámetro va a ser la
URL, con la cual le vamos a hacer como
01:17.500 --> 01:24.660
esa petición. Y el tercer parámetro va a
ser el tipo de dato que vamos a enviar.
01:24.900 --> 01:31.660
Perfecto. Entonces, ahora con esto, lo que
vamos a hacer es, vamos a poner
01:31.660 --> 01:39.900
return y vamos a generar un fetch. Y el
fetch va a llevar de inicio
01:39.900 --> 01:44.540
la URL que le vamos a pasar, que va a ser
el parámetro cuando mandemos llamar
01:44.540 --> 01:49.980
nuestra función, a qué URL le vamos a
hacer el fetch.
01:49.980 --> 01:54.300
Y aquí vamos a estructurar de forma
distinta
01:54.300 --> 01:58.740
qué es lo que vamos a utilizar para el fetch.
Vamos a poner
01:58.740 --> 02:04.260
ahora el tipo de método que vamos a utilizar.
Y esto va a ser
02:04.260 --> 02:12.020
igual a el método. Bien, ahora la
estructura del request
02:12.020 --> 02:17.780
trae un body y trae un header. En el body,
por ejemplo, cuando nosotros
02:17.780 --> 02:21.740
hacemos un post, tenemos que enviar la
información que estamos enviando
02:21.740 --> 02:28.980
directamente al servidor. Esto iría en el
body del request. Y la forma de enviar
02:28.980 --> 02:33.020
es un JSON
punto
02:33.900 --> 02:39.420
stringify
data.
02:39.420 --> 02:45.740
Que lo que hace el stringify es convierte
el objeto de yes en JSON.
02:45.740 --> 02:51.980
Y ahora el tipo de header, que son los
headers del request, que es lo que vamos
02:51.980 --> 02:57.140
a estar enviando. Y aquí en la parte de
los headers, hay cierta información que
02:57.140 --> 03:01.500
se está guardando. Pero de inicio, la
información que yo le voy a decir
03:01.500 --> 03:08.500
que vamos a enviar, es vamos a enviar un JSON,
un tipo de contenido en
03:08.500 --> 03:13.500
JSON, para que se sepa cómo tratar el
contenido o la data que vamos a enviar
03:13.500 --> 03:18.060
nosotros. Y eso se hace de esta forma.
03:18.220 --> 03:22.220
Content
type.
03:22.300 --> 03:30.540
Y aquí le decimos que es un application
slash JSON.
03:30.540 --> 03:34.540
Perfecto. Entonces aquí estamos enviando
la
03:34.540 --> 03:39.660
url, que nos van a pasar como parámetro
una vez que pongamos la función. Y aquí
03:39.660 --> 03:44.540
le estamos enviando todos los metadatos
que requiere ser request. El tipo de
03:44.540 --> 03:49.460
método, lo que viene en el body, si aplica
y cuáles van a ser los headers
03:49.460 --> 03:54.020
que vamos a estar enviando. Súper bien.
Ya que tenemos eso,
03:54.020 --> 03:57.380
ahora vamos a enviar, como estamos
utilizando un fetch, y esto es una
03:57.380 --> 04:03.540
promesa, vamos a utilizar el den, para que
el den nos regrese la respuesta.
04:03.540 --> 04:07.740
Porque lo que estamos haciendo aquí es
enviando el request y queremos que nos
04:07.740 --> 04:11.820
regrese una respuesta, para que cuando
utilicemos esta función, tengamos los
04:11.820 --> 04:20.420
datos de esa respuesta. Entonces aquí sea
response, y eso va a ser igual a,
04:20.500 --> 04:27.620
queremos que, return, que nos regrese la
respuesta.
04:28.300 --> 04:33.380
Para que entonces ya con esto, nosotros
podamos hacer algo. Ok, Zoom, ya que
04:33.380 --> 04:37.100
tenemos esta respuesta, podemos empezar a
trabajarla en la parte de front, para
04:37.100 --> 04:42.380
inyectarla en nuestro HTML. Bien, vamos a
guardar.
04:42.380 --> 04:47.540
Y ahora, ya que estamos aquí, ya que
tenemos la estructura de cómo vamos a
04:47.540 --> 04:52.700
estar haciendo las las los request de HTTP,
vamos a empezar entonces con el
04:52.700 --> 04:58.740
request, que va a darle interacción a este
botón. Este botón lo que va a hacer
04:58.740 --> 05:03.940
es, al momento de dar un getContent,
lo que yo esperaría es que se genere ese
05:03.940 --> 05:08.220
request en el servidor y me traiga la
información, que es lo que estuvimos
05:08.220 --> 05:12.420
viendo. Al estar utilizando un fetch,
podemos imprimir en la consola como una
05:12.420 --> 05:18.060
respuesta. Entonces vamos acá, y vamos a
generar otra función,
05:18.380 --> 05:26.700
que se va a llamar fetchPost. Lo que
queremos es que nos traiga, como los
05:26.700 --> 05:32.500
post que utilizamos en nuestra URL. Esta
función no va a llevar ningún tipo de
05:32.500 --> 05:36.460
parámetro, porque toda la lógica va a
estar acá adentro. Y vamos a utilizar una
05:36.460 --> 05:44.460
función async, para no estar bloqueando
las cargas que tenemos en el navegador y
05:44.460 --> 05:47.700
dar una buena experiencia con relación al
tiempo de carga que tenga nuestra
05:47.700 --> 05:52.220
aplicación. Entonces estamos aquí, lo que
vamos a hacer ahora es generar una
05:52.220 --> 06:03.780
constante que se va a llamar responseData,
que va a ser igual a await
06:03.780 --> 06:08.100
de esta función. Aquí es donde vamos a
hacer nosotros como el fetch,
06:08.100 --> 06:14.020
prácticamente. Entonces para eso le
ponemos sendHttpRequest, como si
06:14.020 --> 06:20.260
hiciéramos un fetch, pero este es como
nuestro fetch. Y aquí vamos a ponerle el
06:20.260 --> 06:26.900
tipo de método. Queremos que hagas un get,
06:26.900 --> 06:32.620
que como te comento, fetch por default
siempre va a ser un get, pero como aquí
06:32.620 --> 06:37.820
estamos haciendo una función que vamos a
reutilizar, vamos a ser específicos en
06:37.820 --> 06:41.420
lo que estamos buscando. Entonces queremos
que hagas un fetch, y queremos que el
06:41.420 --> 06:47.100
fetch lo hagas a la URL de que estábamos
utilizando, para poder traer los
06:47.100 --> 06:53.980
diferentes posts. Le damos un coma y vamos
a pegar esta URL.
06:53.980 --> 06:58.220
Y la URL tiene que ir con
comillas.
06:58.380 --> 07:02.380
Perfecto. Entonces de esta función, como
estamos haciendo nosotros un get, le
07:02.380 --> 07:07.340
estamos diciendo, queremos que hagas un
get a esta URL, haz el fetch y me
07:07.340 --> 07:12.740
regresas la respuesta. Super bien.
Entonces ya con eso, lo que yo esperaría
07:12.740 --> 07:20.260
que pasar aquí es un
console.log
07:20.260 --> 07:24.460
y quiero que me imprima esta respuesta.
Quiero que me imprima lo que nos va a
07:24.460 --> 07:30.540
regresar nuestra función de fetch.
Entonces si guardamos, solucionamos
07:30.540 --> 07:35.060
teType o antes de que nos quede el problema,
json,
07:35.060 --> 07:40.020
y venimos aquí a nuestro navegador, vamos
a nuestra consola, y lo que
07:40.020 --> 07:45.220
tenemos que hacer ahora es nada más mandar
llamar nuestra función, que se va
07:45.220 --> 07:51.900
a encargar de generar el request. Perfecto.
Nos dice que es una promesa y
07:51.900 --> 07:57.220
nos dice aquí, más bien ya nos trae la
respuesta. Por esta parte, ok, vamos
07:57.220 --> 08:01.100
directamente a nuestro network, que es
donde me interesa, porque estamos
08:01.100 --> 08:06.300
haciendo uso
de...
08:06.300 --> 08:11.780
Entonces aquí podemos ver que se hizo
nuestro request de fetch. Estamos en un
08:11.780 --> 08:18.140
status 200 a la URL. Entonces abrimos el post.
Este es el preview de lo que nos
08:18.140 --> 08:23.900
regresa. Cuando estemos trabajando con
request en APIs, esta es la pantalla
08:23.900 --> 08:27.260
donde tenemos que pasar nuestro mayor tiempo.
Por aquí es donde realmente
08:27.260 --> 08:30.900
podemos ver qué es lo que está pasando.
Si las cosas no funcionan, si las cosas
08:30.900 --> 08:34.580
funcionan, si el request de ahora no está
funcionando de la forma esperada, aquí vamos a saber
08:34.580 --> 08:40.100
qué es lo que está pasando. Entonces, listo,
con esto ya tenemos la
08:40.100 --> 08:47.140
información. Bien, si venimos acá, ¿qué es
el siguiente paso?
08:47.140 --> 08:51.300
El siguiente paso sería tomar esta respuesta.
Como podemos ver, esta respuesta
08:51.300 --> 08:56.060
nos regresa un arreglo de diferentes
objetos y de aquí tenemos que extraer
08:56.060 --> 09:00.380
la información para poder imprimir el título,
para poder imprimir el contenido.
09:00.380 --> 09:05.620
Nos trae por ejemplo el título y el body
del post y nos trae un ID. Esto es lo que
09:05.620 --> 09:10.100
nosotros queremos imprimir e inyectar
directamente en nuestro HTML con
09:10.100 --> 09:15.660
JavaScript. Entonces lo que yo tendría que
hacer ahorita sería, de inicio,
09:15.660 --> 09:21.660
podría generar una nueva constante para
mantener limpia la respuesta que me trae
09:21.660 --> 09:25.660
el navegador o más bien el servidor.
Podría generar una nueva constante que se llama
09:25.660 --> 09:33.620
list of posts, para ser mucho más claro,
que sea igual a esta respuesta. Y así yo
09:33.620 --> 09:40.060
no modifico esta variable. Y ahora con eso,
lo primero que yo tendría que hacer
09:40.060 --> 09:47.300
es, como me está llegando a mí un objeto,
me está llegando... vamos acá...
09:47.300 --> 09:51.300
para poderlo ver... cierro un poquito aquí...
09:51.300 --> 09:57.380
ok, aquí me está llegando un arreglo.
Si yo pongo console y mando a llamar otra
09:57.380 --> 10:03.420
vez mi función, me está llegando un
arreglo de diferentes objetos y lo que
10:03.420 --> 10:09.220
yo quiero hacer es imprimir cada uno de
estos objetos
10:09.220 --> 10:15.460
en mi HTTP. La forma de hacerlo es, tengo
que iterar, tengo que
10:15.460 --> 10:19.580
iterar este arreglo, para que entonces por
cada uno de los objetos de ese
10:19.580 --> 10:24.780
arreglo, yo pueda empezar a extraer la
información e inyectarla en el HTML.
10:24.780 --> 10:29.740
Entonces, yo ya tengo como cierto código
listo. Lo que voy a hacer es
10:29.740 --> 10:33.900
copiar y pegar y te lo voy a explicar en
este momento.
10:33.900 --> 10:38.380
Entonces aquí yo voy a copiar este código.
Este código lo estoy copiando
10:38.380 --> 10:43.580
porque esto es algo que tú ya sabes hacer.
Si tienes dudas con parte de este
10:43.580 --> 10:47.060
código, te recomiendo que puedas reforzar
tus conocimientos en el tema de
10:47.060 --> 10:51.020
manipulación del DOM, en la parte de crear
y manipular elementos con
10:51.020 --> 10:56.020
JavaScript. Pero vamos a ver aquí entonces
qué estamos haciendo. Estamos generando
10:56.020 --> 11:03.980
un for-off para poder iterar sobre el
arreglo de objetos que nos trae.
11:03.980 --> 11:08.540
Entonces lo que le estamos pidiendo es que
por cada post que venga en la lista de post,
11:08.540 --> 11:14.980
lo que tienes que hacer es lo siguiente.
Ahora, post container, aquí estamos
11:14.980 --> 11:19.940
generando un nuevo elemento con
createElement que se
11:19.940 --> 11:26.780
llama un article. A este nuevo elemento le
estamos generando un ID y una clase
11:26.780 --> 11:31.260
para que pueda hacer match con el CSS que
tenemos. De igual forma estamos
11:31.260 --> 11:36.100
generando un título y le estamos poniendo
el título con el contenido de
11:36.100 --> 11:43.020
texto que viene en el post, en el title.
Si venimos aquí a nuestro request
11:43.020 --> 11:46.860
y lo mandamos llamar con nuestra función,
11:46.860 --> 11:52.940
podemos ver un poco la estructura que nos
trae. Dentro de la estructura si viene el
11:52.940 --> 11:57.900
título, viene el título y el cuerpo.
Entonces también aquí estamos generando
11:57.900 --> 12:03.060
por ejemplo el body que va a ser
referencia a esta parte y estamos aquí
12:03.060 --> 12:08.020
poniéndole el contenido de texto con el
punto body que viene en este objeto.
12:08.020 --> 12:13.580
Estamos generando un botón y este botón va
a tener el texto de borrar, borrar
12:13.580 --> 12:18.020
contenido y aquí nada más estamos haciendo
un append y el append lo estamos
12:18.020 --> 12:23.660
haciendo a el listElement que eso hace
referencia a un contenedor que viene en
12:23.660 --> 12:30.900
nuestro HTML. Ahora lo que tenemos que
hacer es, tenemos que con JavaScript y
12:30.900 --> 12:33.860
eso lo voy a poner aquí
arriba.
12:33.860 --> 12:39.500
Perfecto, entonces aquí estamos generando
las variables de cada uno de
12:39.500 --> 12:43.100
nuestros elementos y con JavaScript los
estamos seleccionando para poderlos
12:43.100 --> 12:48.460
guardar. Entonces aquí teníamos el
listElement que le estamos haciendo
12:48.460 --> 12:53.700
referencia aquí y estamos pidiendo que
esto que acabamos de generar lo pueda
12:53.700 --> 13:00.620
inyectar en un append a listElement.
Todo esto es parte de, por ejemplo aquí el
13:00.620 --> 13:05.380
body y el title lo estamos poniendo
prácticamente en el post container que
13:05.380 --> 13:09.580
es como el contenedor de una tarjeta y esa
tarjeta completa la estamos
13:09.580 --> 13:16.660
agregando a nuestra como lista de
elementos que si abrimos nuestro HTML
13:16.660 --> 13:20.420
va a ser el contenedor donde se van a guardar.
Super bien, entonces vamos a
13:20.420 --> 13:26.980
guardar esto, ¿qué nos faltaría? Nos falta
poder como imprimir, al momento de que yo
13:26.980 --> 13:31.860
haga clic en este botón, lo que yo quiero
que haga es que este botón haga el
13:31.860 --> 13:37.380
request get y cuando me traiga esa
información aparezca visualmente acá.
13:37.380 --> 13:42.260
Entonces lo que tenemos que hacer es
tenemos que generar esa interacción con
13:42.260 --> 13:48.340
JavaScript, tenemos que ponerle ese evento
a ese botón. Entonces ya tenemos aquí el
13:48.340 --> 13:57.940
botón se llama fetchButton, vamos a
ponerlo acá, fetchButton.asksHeavenListener
13:57.940 --> 14:03.300
y queremos que esto suceda con un clic.
14:04.060 --> 14:09.620
Perfecto y una vez que suceda el clic que
manda a llamar nuestra función de
14:09.620 --> 14:13.580
fetchPost.
14:13.580 --> 14:20.580
Con esto guardamos y si todo funciona al
momento de darle getContent
14:20.580 --> 14:24.580
podemos ver cómo automáticamente se
empiezan a cargar cada uno de nuestros
14:24.580 --> 14:44.580
posts.
|