a / subir /Curso de Fundamentos de JavaScript /06-Asincronía en JavaScript /08-Envío de Datos al Servidor con JavaScript y Fetch API.vtt
| WEBVTT | |
| 00:00.000 --> 00:02.000 | |
| Ya tenemos aquí nuestros | |
| posts. | |
| 00:02.000 --> 00:04.000 | |
| Ahora, lo que queremos hacer nosotros, | |
| 00:04.000 --> 00:08.000 | |
| es al momento de que yo pueda llenar aquí | |
| un título, | |
| 00:08.000 --> 00:11.000 | |
| y algo de | |
| contenido, | |
| 00:11.000 --> 00:14.000 | |
| y pongamos post | |
| content, | |
| 00:14.000 --> 00:16.000 | |
| esto tendría que enviar un | |
| post, | |
| 00:16.000 --> 00:19.000 | |
| que en HTTP, los verbos de | |
| HTTP, | |
| 00:19.000 --> 00:22.000 | |
| esto es poder enviar información | |
| directamente al servidor, | |
| 00:22.000 --> 00:24.000 | |
| y que esta información que yo estoy | |
| llenando aquí, | |
| 00:24.000 --> 00:26.000 | |
| realmente se | |
| envíe. | |
| 00:26.000 --> 00:28.000 | |
| De inicio tenemos que evitar que este | |
| comportamiento, | |
| 00:28.000 --> 00:30.000 | |
| de que se refresca la | |
| página, | |
| 00:30.000 --> 00:32.000 | |
| cada que le doy clic, | |
| suceda. | |
| 00:32.000 --> 00:34.000 | |
| Vamos a ir con | |
| JavaScript. | |
| 00:34.000 --> 00:36.000 | |
| Pero también tenemos que tomar la | |
| información de acá, | |
| 00:36.000 --> 00:39.000 | |
| guardarla, y enviarla en el request. | |
| 00:39.000 --> 00:41.000 | |
| Para que podamos ver | |
| aquí, | |
| 00:41.000 --> 00:45.000 | |
| una vez que apretemos este botón de post | |
| content, | |
| 00:45.000 --> 00:48.000 | |
| podamos ver como se hizo una petición más, | |
| 00:48.000 --> 00:51.000 | |
| podamos ver que esa petición está pasando | |
| en post, | |
| 00:51.000 --> 00:53.000 | |
| y que es lo que se está | |
| enviando. | |
| 00:53.000 --> 00:55.000 | |
| Así que, vamos para | |
| allá. | |
| 00:55.000 --> 00:57.000 | |
| Estamos aquí en nuestro | |
| JavaScript, | |
| 00:57.000 --> 01:00.000 | |
| y vamos a empezar con otra | |
| función, | |
| 01:00.000 --> 01:04.000 | |
| que se va a llamar | |
| createPost. | |
| 01:04.000 --> 01:06.000 | |
| Y va a tener dos | |
| parámetros, | |
| 01:06.000 --> 01:08.000 | |
| que es el | |
| título, | |
| 01:08.000 --> 01:11.000 | |
| y el | |
| content. | |
| 01:11.000 --> 01:13.000 | |
| Perfecto. | |
| 01:13.000 --> 01:16.000 | |
| Estando aquí, vamos a | |
| examinar, | |
| 01:16.000 --> 01:20.000 | |
| un poco la | |
| estructura, | |
| 01:20.000 --> 01:23.000 | |
| de los posts que se están | |
| enviando. | |
| 01:23.000 --> 01:25.000 | |
| Si vemos aquí el | |
| response, | |
| 01:25.000 --> 01:27.000 | |
| que tiene que enviar el | |
| título, | |
| 01:27.000 --> 01:29.000 | |
| vemos que tiene que enviar el cuerpo, | |
| 01:29.000 --> 01:32.000 | |
| que será el título, y el contenido va a | |
| ser el cuerpo. | |
| 01:32.000 --> 01:35.000 | |
| Pero vemos aquí que viene un ID, y un User ID. | |
| 01:35.000 --> 01:38.000 | |
| Nosotros tendríamos que enviar un User ID, | |
| 01:38.000 --> 01:41.000 | |
| para poder hacer match un poco con la | |
| estructura. | |
| 01:41.000 --> 01:43.000 | |
| Pudiéramos enviar el | |
| ID, | |
| 01:43.000 --> 01:46.000 | |
| pero de inicio, con que nosotros creemos | |
| un User ID, | |
| 01:46.000 --> 01:49.000 | |
| va a ser importante, para poderlo enviar, | |
| 01:49.000 --> 01:51.000 | |
| y que no rompa la | |
| estructura, | |
| 01:51.000 --> 01:54.000 | |
| de lo que estaría esperando el servidor de | |
| esta API. | |
| 01:54.000 --> 01:56.000 | |
| Para poder hacer | |
| eso, | |
| 01:56.000 --> 01:59.000 | |
| nosotros no vamos a poder generar un | |
| número distinto, | |
| 01:59.000 --> 02:02.000 | |
| por cada uno de los posts que se vaya | |
| generando. | |
| 02:02.000 --> 02:06.000 | |
| Así que, voy a, de manera | |
| rápida, | |
| 02:06.000 --> 02:10.000 | |
| generar una constante que se llame User ID, | |
| 02:10.000 --> 02:14.000 | |
| que va a ser igual a un match random, | |
| 02:14.000 --> 02:18.000 | |
| que me vaya a generar un número de manera | |
| aleatoria, | |
| 02:18.000 --> 02:21.000 | |
| que se va a convertir en este User ID. | |
| 02:21.000 --> 02:23.000 | |
| Ya lo tenemos acá. | |
| Perfecto. | |
| 02:23.000 --> 02:26.000 | |
| Entonces, aquí tenemos que hacer esa | |
| pequeña estructura, | |
| 02:26.000 --> 02:28.000 | |
| ese pequeño objeto que vamos a enviar, | |
| 02:28.000 --> 02:30.000 | |
| y se va a llamar | |
| post. | |
| 02:30.000 --> 02:32.000 | |
| Este es el post que vamos a estar enviando. | |
| 02:32.000 --> 02:34.000 | |
| El post va a tener un | |
| title, | |
| 02:34.000 --> 02:36.000 | |
| que va a ser igual al | |
| title, | |
| 02:36.000 --> 02:41.000 | |
| que va a venir prácticamente de lo que | |
| obtengamos | |
| 02:41.000 --> 02:44.000 | |
| de nuestro input, pero se va a inyectar aquí, | |
| 02:44.000 --> 02:46.000 | |
| en nuestra | |
| función. | |
| 02:46.000 --> 02:48.000 | |
| Vamos a tener un | |
| body, | |
| 02:48.000 --> 02:52.000 | |
| que va a ser referencia al | |
| content, | |
| 02:52.000 --> 02:56.000 | |
| que estamos nosotros utilizando aquí en | |
| nuestra función, | |
| 02:56.000 --> 02:59.000 | |
| como parámetro, y el User | |
| ID, | |
| 02:59.000 --> 03:02.000 | |
| que se está generando de manera aleatoria, | |
| 03:02.000 --> 03:04.000 | |
| con un match | |
| random. | |
| 03:04.000 --> 03:06.000 | |
| User ID. | |
| Perfecto. | |
| 03:06.000 --> 03:08.000 | |
| Entonces, teniendo | |
| eso, | |
| 03:08.000 --> 03:10.000 | |
| tenemos la pequeña | |
| estructura | |
| 03:10.000 --> 03:13.000 | |
| de lo que se va a enviar al servidor. | |
| 03:13.000 --> 03:15.000 | |
| ¿Qué nos | |
| falta? | |
| 03:15.000 --> 03:18.000 | |
| Esta función vamos a hacerla | |
| async. | |
| 03:18.000 --> 03:20.000 | |
| Muy | |
| bien. | |
| 03:20.000 --> 03:22.000 | |
| Entonces, ahora, | |
| aquí, | |
| 03:22.000 --> 03:24.000 | |
| tenemos que hacer ese | |
| request. | |
| 03:24.000 --> 03:26.000 | |
| Y para poder hacer ese | |
| request, | |
| 03:26.000 --> 03:29.000 | |
| vamos a mandar llamar nuestra | |
| función | |
| 03:31.000 --> 03:34.000 | |
| para que se genere el | |
| fetch. | |
| 03:35.000 --> 03:38.000 | |
| Entonces, aquí, ponemos esta función. | |
| 03:38.000 --> 03:43.000 | |
| El método, aquí le vamos a pedir que ahora | |
| sea un post. | |
| 03:43.000 --> 03:47.000 | |
| Ese va a ser el método que vamos a estar | |
| utilizando. | |
| 03:47.000 --> 03:50.000 | |
| La URL va a ser la misma | |
| URL | |
| 03:50.000 --> 03:53.000 | |
| que estamos utilizando para ese ejercicio. | |
| 03:53.000 --> 03:56.000 | |
| Entonces, vamos a utilizar esta misma | |
| URL | |
| 03:56.000 --> 03:59.000 | |
| para que pueda enviar un | |
| post. | |
| 03:59.000 --> 04:02.000 | |
| Entonces, aquí ponemos, y tenemos la misma | |
| URL. | |
| 04:02.000 --> 04:04.000 | |
| Y los datos que vamos a | |
| enviar, | |
| 04:04.000 --> 04:07.000 | |
| porque en este caso, como estamos enviando | |
| un post, | |
| 04:07.000 --> 04:09.000 | |
| sí tiene que ir un | |
| body, | |
| 04:09.000 --> 04:12.000 | |
| porque el body habla de la información que | |
| estamos enviando. | |
| 04:12.000 --> 04:14.000 | |
| En este caso, va a ser | |
| post. | |
| 04:14.000 --> 04:17.000 | |
| Esta es la información que nosotros vamos | |
| a enviar. | |
| 04:18.000 --> 04:19.000 | |
| Perfecto. | |
| 04:19.000 --> 04:21.000 | |
| Entonces, con esto ya tenemos la | |
| estructura | |
| 04:21.000 --> 04:24.000 | |
| de la función que va a estar enviando el | |
| request | |
| 04:24.000 --> 04:28.000 | |
| con la información para poder generar un | |
| nuevo blog post. | |
| 04:28.000 --> 04:29.000 | |
| ¿Qué nos | |
| faltaría? | |
| 04:29.000 --> 04:34.000 | |
| Nos falta ahora generar el evento en este | |
| botón. | |
| 04:34.000 --> 04:38.000 | |
| Entonces, este botón se llama, vamos a | |
| ponerlo aquí, | |
| 04:38.000 --> 04:40.000 | |
| lo tenemos por | |
| acá. | |
| 04:41.000 --> 04:43.000 | |
| Entonces, está aquí, es el | |
| form. | |
| 04:43.000 --> 04:45.000 | |
| Vamos a estar utilizando el | |
| form. | |
| 04:45.000 --> 04:47.000 | |
| Podemos ver que la estructura es un new post, | |
| 04:47.000 --> 04:51.000 | |
| que es el contenedor en donde existe el form. | |
| 04:51.000 --> 04:54.000 | |
| Y al form le vamos a agregar el evento de | |
| submit | |
| 04:54.000 --> 04:56.000 | |
| para que se pueda enviar la | |
| información | |
| 04:56.000 --> 04:58.000 | |
| que tienen estos dos | |
| inputs. | |
| 04:58.000 --> 05:01.000 | |
| Y aquí al momento de darle click en este | |
| botón, | |
| 05:01.000 --> 05:03.000 | |
| que tiene el tipo de | |
| submit, | |
| 05:03.000 --> 05:05.000 | |
| que es el que como genera este trigger, | |
| 05:05.000 --> 05:08.000 | |
| tenemos que quitar este comportamiento. | |
| 05:08.000 --> 05:10.000 | |
| Así que lo primero que vamos a hacer es, | |
| 05:10.000 --> 05:19.000 | |
| vamos a venir aquí y vamos a ocupar el form. | |
| addEventListener | |
| 05:20.000 --> 05:24.000 | |
| y vamos a decir que el evento que queremos | |
| nosotros escuchar | |
| 05:24.000 --> 05:26.000 | |
| es un | |
| submit. | |
| 05:28.000 --> 05:31.000 | |
| Y queremos que nos traiga el evento mismo. | |
| 05:33.000 --> 05:34.000 | |
| ¿Para | |
| qué? | |
| 05:34.000 --> 05:37.000 | |
| Una, para poder prevenir este | |
| comportamiento que tiene. | |
| 05:37.000 --> 05:45.000 | |
| Entonces vamos | |
| event.preventDefault | |
| 05:46.000 --> 05:51.000 | |
| y dos, para poder tener acceso a los | |
| elementos | |
| 05:51.000 --> 05:53.000 | |
| que tiene el | |
| formulario, | |
| 05:53.000 --> 05:56.000 | |
| para poder tener estos dos | |
| valores. | |
| 05:56.000 --> 05:59.000 | |
| Entonces ahorita ya le estoy dando click | |
| al botón | |
| 05:59.000 --> 06:01.000 | |
| y podemos ver que ya no se reinicia la página, | |
| 06:01.000 --> 06:04.000 | |
| así que ya ese comportamiento se está | |
| erradicando. | |
| 06:04.000 --> 06:07.000 | |
| Ahora vamos a tomar el valor de estos dos | |
| inputs. | |
| 06:07.000 --> 06:10.000 | |
| Entonces la forma de hacerlo es genero una | |
| constante | |
| 06:10.000 --> 06:26.000 | |
| que se llame title igual a | |
| event.currentTarget.querySelector | |
| 06:26.000 --> 06:33.000 | |
| y quiero que busque si ese target actual, | |
| 06:33.000 --> 06:35.000 | |
| que tiene que venir en | |
| comillas, | |
| 06:37.000 --> 06:40.000 | |
| tenga el ID de | |
| title. | |
| 06:42.000 --> 06:45.000 | |
| Y si sí, quiero que me traiga el value. | |
| 06:46.000 --> 06:47.000 | |
| Perfecto. | |
| 06:48.000 --> 06:50.000 | |
| Entonces vamos a hacer lo mismo con el body. | |
| 06:50.000 --> 07:04.000 | |
| Const se va a llamar content igual a event. | |
| currentTarget.querySelector | |
| 07:04.000 --> 07:05.000 | |
| y lo | |
| mismo. | |
| 07:05.000 --> 07:11.000 | |
| Este tiene que tener un ID que se llame | |
| content. | |
| 07:11.000 --> 07:19.000 | |
| Muy bien, si venimos acá, aquí tenemos el | |
| document. | |
| 07:21.000 --> 07:23.000 | |
| Vamos a darle un poquito más de espacio. | |
| 07:24.000 --> 07:27.000 | |
| Venimos al body, venimos a este section | |
| new posts, | |
| 07:27.000 --> 07:29.000 | |
| el new posts trae el | |
| formulario. | |
| 07:29.000 --> 07:36.000 | |
| Entonces aquí tiene que venir un input con | |
| título | |
| 07:36.000 --> 07:39.000 | |
| y aquí un input con | |
| content. | |
| 07:39.000 --> 07:44.000 | |
| Y estamos haciendo como el target | |
| actual | |
| 07:44.000 --> 07:51.000 | |
| para hacerle selección a, aquí nos falta | |
| el punto value, | |
| 07:51.000 --> 07:54.000 | |
| para que nos pueda traer el valor del | |
| target actual | |
| 07:54.000 --> 08:01.000 | |
| que tenga un ID que haga match con los ID | |
| que estamos nosotros seleccionando en este momento. | |
| 08:01.000 --> 08:04.000 | |
| Entonces si guardamos, aquí ya tenemos dos | |
| constantes | |
| 08:04.000 --> 08:09.000 | |
| que van a ser las dos constantes de estos | |
| dos inputs | |
| 08:09.000 --> 08:12.000 | |
| que nos tiene que traer el texto que | |
| nosotros escribamos. | |
| 08:13.000 --> 08:18.000 | |
| Si en este momento pongo un console. | |
| log, por ejemplo, | |
| 08:18.000 --> 08:26.000 | |
| y hago title, | |
| contents, | |
| 08:26.000 --> 08:36.000 | |
| aquí pongo título y contenido y le doy enter. | |
| 08:37.000 --> 08:44.000 | |
| Aquí nos dice que hay un typo en la línea | |
| 64 con el query selector. | |
| 08:44.000 --> 08:51.000 | |
| Si venimos en la línea 64, target, podemos | |
| guardar. | |
| 08:51.000 --> 09:01.000 | |
| Hacemos lo mismo, título, contenido, | |
| post y listo, nos trae título y contenido. | |
| 09:01.000 --> 09:05.000 | |
| Entonces a este momento ya tenemos el | |
| valor de nuestros inputs. | |
| 09:05.000 --> 09:07.000 | |
| ¿Qué es lo que nos | |
| falta? | |
| 09:07.000 --> 09:11.000 | |
| Nos falta simplemente mandar llamar | |
| nuestra función. | |
| 09:11.000 --> 09:14.000 | |
| Al momento de que se genere el submits, | |
| 09:14.000 --> 09:18.000 | |
| lo que queremos es que en esta función | |
| pueda venir el título | |
| 09:18.000 --> 09:22.000 | |
| y pueda venir el contenido que hace | |
| relación o referencia | |
| 09:22.000 --> 09:25.000 | |
| a estas dos variables que tenemos aquí. | |
| 09:25.000 --> 09:28.000 | |
| Es perfecto, vamos a | |
| guardar. | |
| 09:28.000 --> 09:34.000 | |
| Y aquí si guardamos, podemos venir a | |
| networking, network. | |
| 09:36.000 --> 09:38.000 | |
| Bien, vamos a darle un poco más de espacio | |
| a esto | |
| 09:38.000 --> 09:41.000 | |
| para poder ver bien que es lo que va a pasar. | |
| 09:42.000 --> 09:46.000 | |
| Entonces aquí podemos ver que todavía no | |
| existe un post. | |
| 09:46.000 --> 09:53.000 | |
| Si ponemos aquí título, contenido y enviamos, | |
| 09:54.000 --> 09:56.000 | |
| podemos ver cómo aquí aparece este post. | |
| 09:56.000 --> 10:00.000 | |
| Y dice que el método que se ocupó fue un | |
| método de post, | |
| 10:00.000 --> 10:07.000 | |
| un 201, perfecto, que fue creado, y al | |
| dominio, y se utilizó un fetch. | |
| 10:07.000 --> 10:11.000 | |
| Si abrimos este post, podemos ver qué es | |
| lo que se envió. | |
| 10:11.000 --> 10:15.000 | |
| Se envió el título, se envió el body, | |
| que es el contenido, | |
| 10:15.000 --> 10:18.000 | |
| el user ID, que es un mat random generado, | |
| 10:18.000 --> 10:23.000 | |
| aquí podríamos cambiar un poco para | |
| redondearlo a números enteros, | |
| 10:23.000 --> 10:26.000 | |
| pero se está enviando un user | |
| ID. | |
| 10:26.000 --> 10:29.000 | |
| Y si vamos al header, podemos ver que se | |
| está utilizando | |
| 10:29.000 --> 10:32.000 | |
| el método post a la URL que nosotros | |
| estamos buscando, | |
| 10:32.000 --> 10:36.000 | |
| el status que se está generando, y con | |
| esto ya estamos viendo | |
| 10:36.000 --> 10:46.000 | |
| qué es lo que se envió al | |
| servidor. | |