a
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.