<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VikingCodeBlog</title>
    <description>The latest articles on DEV Community by VikingCodeBlog (@vikingcodeblog).</description>
    <link>https://dev.to/vikingcodeblog</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F609029%2Fef608ce7-57e5-4315-9a91-4f7fbf5cff5d.png</url>
      <title>DEV Community: VikingCodeBlog</title>
      <link>https://dev.to/vikingcodeblog</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vikingcodeblog"/>
    <language>en</language>
    <item>
      <title>Guía de teclados mecánicos para programadores</title>
      <dc:creator>VikingCodeBlog</dc:creator>
      <pubDate>Tue, 17 Aug 2021 14:44:53 +0000</pubDate>
      <link>https://dev.to/vikingcodeblog/guia-de-teclados-mecanicos-para-programadores-1ba5</link>
      <guid>https://dev.to/vikingcodeblog/guia-de-teclados-mecanicos-para-programadores-1ba5</guid>
      <description>&lt;h1&gt;
  
  
  Qué es un teclado mecánico y en que se diferencia de uno normal?
&lt;/h1&gt;

&lt;p&gt;Seguramente, la primera vez que busques información sobre un teclado mecánico encuentres algo similar a esto:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xfenr006h4tgwfjz62t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xfenr006h4tgwfjz62t.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Teclados con más luces que una feria, eso es porque el mundo de los teclados mecánicos ha tenido un target muy fuerte durante los últimos años en la comunidad gamer.&lt;/p&gt;

&lt;p&gt;Así que eso es lo primero que quiero aclarar, un teclado mecánico no tiene porqué ser para gamers, tampoco tiene que tener luces de colores, ni ser extremadamente ruidoso como se ve en las principales marcas.&lt;/p&gt;

&lt;p&gt;Un teclado mecánico es en esencia un teclado con interruptores individuales bajo cada una de sus teclas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aclarando:
&lt;/h2&gt;

&lt;p&gt;En un teclado convencional, debajo de sus teclas, se encuentra una membrana que tiene un punto de activación para cada tecla.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zzb7rvrlffz4vfubwia.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zzb7rvrlffz4vfubwia.jpeg" alt="Membrana"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por otra parte, debajo de las teclas de un teclado mecánico, se encuentran interruptores independientes sobre una &lt;a href="https://es.wikipedia.org/wiki/Circuito_impreso" rel="noopener noreferrer"&gt;PCB&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fi.imgur.com%2FM0rsK.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fi.imgur.com%2FM0rsK.jpg" alt="switches"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Veamos un interruptor más de cerca:
&lt;/h2&gt;

&lt;p&gt;Sin entrar en cada una de sus partes, un interruptor(switch) está formado por piezas no electrónicas, de ahí el nombre de teclado mecánico, estos interruptores al presionarse dejan pasar corriente por la PCB pero el interruptor en sí es algo bastante analógico.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0374%2F9448%2F9228%2Ffiles%2F2018-12-Switch_Components-image.png%3Fv%3Dqnovzwmowy" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0374%2F9448%2F9228%2Ffiles%2F2018-12-Switch_Components-image.png%3Fv%3Dqnovzwmowy" alt="inside switch"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dygma.com/blogs/stories/the-ultimate-guide-to-mechanical-keyboard-switches-for-2020" rel="noopener noreferrer"&gt;Origen de la imagen&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Por qué un teclado mecánico?
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Motivo 1&lt;/em&gt;: Velocidad, sin saber escribir más rápido, creeme que lo harás, el feedback que da un teclado mecánico nos permite reaccionar más rápido y sin darnos cuenta, estaremos escribiendo a una velocidad superior que como lo hacíamos hasta ahora.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivo 2&lt;/em&gt;: Sensaciones, hace bastantes años aparecieron los coches con cambio de marchas automáticas, al principio fueron un desastre, pero con los años, han ido mejorando hasta ser mucho mejor que un cambio de marchas manual, ahora bien, ¿conoces a alguien que le gusten los coches y tenga un cambio de marchas automático? seguramente no, porque al que le gusta conducir, le gusta sentir el cambio de velocidades en cada marcha.&lt;/p&gt;

&lt;p&gt;Con los teclados mecánicos pasa algo similar, cuando pruebas las sensaciones que dan los switches, cuesta volver a un teclado de membrana, algunas veces lo he hecho y ha sido una experiencia horrible, notaba las teclas lentas, un desplazamiento irregular, unas teclas más duras que otras... Nunca había sentido esos problemas hasta que conocía los teclados mecánicos. Lo que me lleva al tercer motivo.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivo 3&lt;/em&gt;: No hay vuelta atrás: No conozco a nadie, repito NADIE, que después de tener un teclado mecánico, decida comprarse de nuevo uno convencional, por algo será.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivo 4&lt;/em&gt;: Reduce el cansancio: ¿Pasas horas escribiendo en tu día a día? si decides adecuadamente un teclado específico para escritura, lo notarás.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivo 5&lt;/em&gt;: Customización, puedes seleccionar desde cero cada pieza de tu teclado a tu gusto.&lt;/p&gt;

&lt;p&gt;Incluso hay webs como &lt;a href="https://www.wasdkeyboards.com/" rel="noopener noreferrer"&gt;wasd keyboards&lt;/a&gt; que te permiten crear tu teclado online&lt;/p&gt;

&lt;h1&gt;
  
  
  Tipos de teclado según su factor forma.
&lt;/h1&gt;

&lt;p&gt;La cantidad de formas en las que puedes encontrar un teclado mecánico son infinitas, pero estas son las principales, personalmente uso siempre teclados tkl o 60%, a priori puede que pienses que con menos teclas te faltarán números o funciones esenciales pero la verdad es que estos teclados aportan las mismas soluciones con menos teclas, colocando las funciones secundarias en atajos de teclado, es un tema muy personal, pero yo prefiero sacrificar teclas secundarias para tener más espacio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthegamingsetup.com%2Fwp-content%2Fuploads%2FKeyboard-Size-Guide-The-Gaming-Setup-scaled.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthegamingsetup.com%2Fwp-content%2Fuploads%2FKeyboard-Size-Guide-The-Gaming-Setup-scaled.jpg" alt="compare keyboards"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como te digo, la cantidad de formas diferentes que puedes encontrar, es espectacular, algunos llevan la ergonomía a su límite, como por ejemplo los split keyboards o los ortholineales.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=wPGmZXAQRyw" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.youtube.com%2Fvi%2FwPGmZXAQRyw%2F0.jpg" alt="Split"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Ho_CFfdsmc8" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.youtube.com%2Fvi%2FHo_CFfdsmc8%2F0.jpg" alt="Ortolineal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Diferentes layouts
&lt;/h1&gt;

&lt;p&gt;Las teclas pueden encontrarse en diferentes distribuciones, por ejemplo, los teclados españoles suelen llevar la distribución ISO pero los teclados americanos suelen llevar la distribución ANSI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fb%2Fb2%2FPhysical_keyboard_layouts_comparison_ANSI_ISO_KS_ABNT_JIS.png%2F1280px-Physical_keyboard_layouts_comparison_ANSI_ISO_KS_ABNT_JIS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fb%2Fb2%2FPhysical_keyboard_layouts_comparison_ANSI_ISO_KS_ABNT_JIS.png%2F1280px-Physical_keyboard_layouts_comparison_ANSI_ISO_KS_ABNT_JIS.png" alt="layouts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esto implica que ciertas teclas especiales como []{};:'"&amp;lt;&amp;gt;,.ñ se encuentran en diferentes localizaciones o incluso pueden que no estén visibles y tengas que aplicar una macro para escribirlas.&lt;/p&gt;

&lt;p&gt;Lo que más preocupa a un español siempre es que los teclados ANSI no tienen "ñ", básicamente la podemos escribir con "AltGR + n".&lt;/p&gt;

&lt;h1&gt;
  
  
  Diferentes switches
&lt;/h1&gt;

&lt;p&gt;La esencia de un teclado mecánico son sus switches, cada uno genera una experiencia diferente y hay miles de marcas diferentes.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKjurnDNhtWCxyvcXZurApi-970-80.jpg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKjurnDNhtWCxyvcXZurApi-970-80.jpg.webp" alt="mech switch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Las marcas clasifican los switches en colores, por ejemplo, los teclados gamer, suelen llevar cherry red, pero lo que importa no es el color, sino el comportamiento de cada uno de ellos, pueden haber switches lineales o clicky por ejemplo, más duros o incluso ópticos, en lugar del mecánico convencional.&lt;/p&gt;

&lt;p&gt;¿Cómo detectar el mejor para ti? En mi experiencia, no puedes, tienes que probar hasta encontrar el que te guste, pero ahora te haré mi recomendación personal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhardzone.es%2Fapp%2Fuploads-hardzone.es%2F2018%2F06%2FInterruptores-mec%25C3%25A1nicos-para-teclados.gif%3Fx%3D480%26quality%3D20" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhardzone.es%2Fapp%2Fuploads-hardzone.es%2F2018%2F06%2FInterruptores-mec%25C3%25A1nicos-para-teclados.gif%3Fx%3D480%26quality%3D20" alt="gif switches"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Modificaciones
&lt;/h3&gt;

&lt;p&gt;Si, no es suficiente entre los miles de switches diferentes que existen, además de esto hay quien los modifican intercambiando piezas, lubricando con grasas industriales realmente caras, modificando la altura del switch... En fin, es algo que puede ser divertido, pero no te lo recomiendo todavía.&lt;/p&gt;

&lt;h1&gt;
  
  
  Diferentes keycaps
&lt;/h1&gt;

&lt;p&gt;La capucha que lleva cada uno de los switches, es llamada keycap y si, existen miles de tipos.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2Fb5%2F25%2Fe2%2Fb525e2caf07bbf8c6911530b9d123e34.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2Fb5%2F25%2Fe2%2Fb525e2caf07bbf8c6911530b9d123e34.jpg" alt="keycaps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Según su material
&lt;/h2&gt;

&lt;p&gt;Principalmente pueden ser keycaps ABS o PBT, en resumen, PBT son mejores al tiempo, porque no se desgastan dejando ese efecto feo pulido en las teclas más usadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Según su producción
&lt;/h2&gt;

&lt;p&gt;Se puede fabricar una keycap de muchas maneras pero si queremos que las letras permanezcan visibles durante toda la vida, nos interesa la fabricación DoubleShot, estas keycaps son dos materiales inyectados uno dentro del otro, la letra que tengas en la keycap es de un material blanco por ejemplo y el resto de la tecla es negro, por lo que por mucho que lo intentes, la tecla no se borrará ya que no es pintura, sino parte del material de construcción.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fm.media-amazon.com%2Fimages%2FI%2F81wdaXzkpTL._AC_SX450_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fm.media-amazon.com%2Fimages%2FI%2F81wdaXzkpTL._AC_SX450_.jpg" alt="doubleshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Según su forma
&lt;/h2&gt;

&lt;p&gt;También hay diferentes formas entre las keycaps, algunas más grandes, otras con cierta inclinación, también es un tema de gustos, algunas te parecerán más ergonómicas que otras.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff36pwca86isqaryfoxc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff36pwca86isqaryfoxc9.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Comprar un teclado mecánico
&lt;/h1&gt;

&lt;p&gt;Básicamente existen dos caminos, el fácil, buscas un teclado en Amazon por ejemplo, que cumpla los requisitos que quieras, o el menos fácil, que es comprar las piezas que te gusten para tú teclado y montarlo tú en casa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Algunas recomendaciones:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Teclados en español (ISO)
&lt;/h3&gt;

&lt;p&gt;Hay muy poca variedad entre los teclados con layout en español y la mayoría son teclados gaming con un solo tipo de switch o de calidades muy bajas.&lt;/p&gt;

&lt;p&gt;Recomiendo alguno como este, no por que sea un gran teclado, sino que como teclado de entrada está bastante bien al poder seleccionar entre muchos switches diferentes.&lt;br&gt;
&lt;a href="https://amzn.to/3gaVSv4" rel="noopener noreferrer"&gt;https://amzn.to/3gaVSv4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Durante mucho tiempo, yo usé este Corsair, un teclado gaming, tiene unos switches rojos y ese fue el principal motivo por el que me lo quité, con el tiempo quería unos switches, más correctos para escritura, no todo son videojuegos.&lt;br&gt;
&lt;a href="https://amzn.to/3iS8QiU" rel="noopener noreferrer"&gt;https://amzn.to/3iS8QiU&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aun así, estuve AÑOS con él y al ser TKL tenía mucho espacio para el ratón en la mesa, muy cómodo para jugar, la verdad es que por su precio, me parece una opción genial como primer teclado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teclados (ANSI)
&lt;/h3&gt;

&lt;p&gt;Esto ya es otra cosa, encontrar buenos teclados en ANSI es infinitamente más sencillo, además como veremos más adelante, si eres programador, esto implica ciertas ventajas.&lt;/p&gt;

&lt;p&gt;Teclado con buenos materiales de construcción, en gran parte metálicos, con bluetooth y cable, buena batería, compatibilidad y diferentes configuraciones para windows que mac. Sí es posible.&lt;/p&gt;

&lt;p&gt;Keychron es una marca muy conocida y la recomiendo para iniciarse por un motivo muy sencillo, ¿Os acordáis cuando os he dicho que la única manera de saber que switch iba a ser tu favorito era probandolos? pues imagina tener que comprar un teclado nuevo cada vez que quieras probar unos switches diferentes, o tener que soldar unos nuevos a la PCB... Pues este teclado tiene los switches intercambiables (HotSwappable) es decir, podrías comprar cualquier switch en aliexpress por ejemplo y probar en tu teclado sin tener que ser un experto soldador, solo necesitas una pinza que te viene con el teclado para realizar el intercambio.&lt;/p&gt;

&lt;p&gt;Si es tu primer teclado, cambiarás los switches 10000 veces más o menos, así que te recomiendo un hotswapp como este.&lt;br&gt;
&lt;a href="https://amzn.to/3yY9fpC" rel="noopener noreferrer"&gt;https://amzn.to/3yY9fpC&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ejemplo, cambio de teclas de un hotswapp&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fae01.alicdn.com%2Fkf%2FHab735791281546dfb06f429e04826501d%2FFeker-Interruptor-de-teclado-mec-nico-reemplazo-de-carcasa-superior-de-policarbonato-t-ctil-de-3.jpg_Q90.jpg_.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fae01.alicdn.com%2Fkf%2FHab735791281546dfb06f429e04826501d%2FFeker-Interruptor-de-teclado-mec-nico-reemplazo-de-carcasa-superior-de-policarbonato-t-ctil-de-3.jpg_Q90.jpg_.webp"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Group Buy
&lt;/h2&gt;

&lt;p&gt;Otra opción es comprar un teclado mediante un Group Buy, esto son páginas que permiten reunir a compradores para hacer peticiones exclusivas a los fabricantes, normalmente, son caros y el tiempo hasta que se confirme el Group Buy puede ser de meses, pero cuando estás en el mundo de los teclados mecánicos, lo exclusivo suele ser lo más apreciado por los aficionados.&lt;/p&gt;

&lt;p&gt;Solo estuve en una group buy y después de semanas, se canceló.&lt;/p&gt;

&lt;p&gt;Eso sí, los teclados mecánicos más espectaculares siempre los he visto en estas Group Buys, así que no está de mal valorar la posibilidad. Ahora mismo, en una de estas páginas &lt;a href="https://drop.com/mechanical-keyboards/drops" rel="noopener noreferrer"&gt;drop&lt;/a&gt; se pueden comprar teclados con temática del universo Marvel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmassdrop-s3.imgix.net%2Fproduct-images%2Fdrop-marvel-iron-man-custom-keycap-set%2FFP%2FymL47eGnS0KmLWYFjbDH_9734-copy-page.jpg%3Fauto%3Dformat%26fm%3Djpg%26fit%3Dfill%26w%3D820%26h%3D547%26bg%3Df0f0f0%26dpr%3D1%26q%3D70" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmassdrop-s3.imgix.net%2Fproduct-images%2Fdrop-marvel-iron-man-custom-keycap-set%2FFP%2FymL47eGnS0KmLWYFjbDH_9734-copy-page.jpg%3Fauto%3Dformat%26fm%3Djpg%26fit%3Dfill%26w%3D820%26h%3D547%26bg%3Df0f0f0%26dpr%3D1%26q%3D70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Construir tu propio teclado
&lt;/h2&gt;

&lt;p&gt;Tarde o temprano lo vas a hacer, la tentación de tener algo lo más personalizado posible es parte de esta afición.&lt;/p&gt;

&lt;p&gt;Las piezas que necesitas para montar tu propio teclado son las siguientes (Ordenadas de abajo a arriba en su montaje).&lt;/p&gt;

&lt;h3&gt;
  
  
  Una Caja:
&lt;/h3&gt;

&lt;p&gt;Algo como esto, te interesa la construcción, los materiales, la ergonomía y su factor forma.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/33048131233.html?spm=a2g0o.productlist.0.0.2a47423cxm4aO7&amp;amp;algo_pvid=fa8d2e0f-feb3-4532-8f27-bb9103b00e6b&amp;amp;algo_exp_id=fa8d2e0f-feb3-4532-8f27-bb9103b00e6b-53&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2267383286886%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/33048131233.html?spm=a2g0o.productlist.0.0.2a47423cxm4aO7&amp;amp;algo_pvid=fa8d2e0f-feb3-4532-8f27-bb9103b00e6b&amp;amp;algo_exp_id=fa8d2e0f-feb3-4532-8f27-bb9103b00e6b-53&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2267383286886%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Una PCB:
&lt;/h3&gt;

&lt;p&gt;Irá dentro de la caja y en ella tendrás que soldar los switches, otra opción es buscar una PCB HotSwappable para no tener que soldar.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/32919981329.html?spm=a2g0o.productlist.0.0.3c4e6a69jw9USr&amp;amp;algo_pvid=fc6e2896-da01-4703-ba8d-a5dc45ed1224&amp;amp;algo_exp_id=fc6e2896-da01-4703-ba8d-a5dc45ed1224-10&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2266051946282%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/32919981329.html?spm=a2g0o.productlist.0.0.3c4e6a69jw9USr&amp;amp;algo_pvid=fc6e2896-da01-4703-ba8d-a5dc45ed1224&amp;amp;algo_exp_id=fc6e2896-da01-4703-ba8d-a5dc45ed1224-10&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2266051946282%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Switches
&lt;/h3&gt;

&lt;p&gt;Esta es la parte más personal, te llevará tiempo saber que switch quieres.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/1005001834590346.html?spm=a2g0o.productlist.0.0.1c4510cf6VtUbZ&amp;amp;algo_pvid=8906d060-f4ef-4543-9a5d-ab3f0fc2d05a&amp;amp;algo_exp_id=8906d060-f4ef-4543-9a5d-ab3f0fc2d05a-8&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000017793401287%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/1005001834590346.html?spm=a2g0o.productlist.0.0.1c4510cf6VtUbZ&amp;amp;algo_pvid=8906d060-f4ef-4543-9a5d-ab3f0fc2d05a&amp;amp;algo_exp_id=8906d060-f4ef-4543-9a5d-ab3f0fc2d05a-8&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000017793401287%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Plate
&lt;/h3&gt;

&lt;p&gt;Esta pieza, además de tapar las partes feas de tu teclado, mantendrá sujetos los switches.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/1005002713459182.html?spm=a2g0o.productlist.0.0.6569314b0pulzh&amp;amp;algo_pvid=c7005fd3-9258-4030-9a91-a23b984430d7&amp;amp;aem_p4p_detail=202108170722146529793030273100001027603&amp;amp;algo_exp_id=c7005fd3-9258-4030-9a91-a23b984430d7-0&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000021826375233%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/1005002713459182.html?spm=a2g0o.productlist.0.0.6569314b0pulzh&amp;amp;algo_pvid=c7005fd3-9258-4030-9a91-a23b984430d7&amp;amp;aem_p4p_detail=202108170722146529793030273100001027603&amp;amp;algo_exp_id=c7005fd3-9258-4030-9a91-a23b984430d7-0&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000021826375233%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Estabilizadores
&lt;/h3&gt;

&lt;p&gt;Las teclas más grandes como la barra espaciadora o el enter, necesitan unos estabilizadores para que su desplazamiento sea regular.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/33039182740.html?spm=a2g0o.productlist.0.0.7a2d31f48fE7BP&amp;amp;algo_pvid=d0985a43-e3d1-4142-9c40-8006e3f3ebaa&amp;amp;algo_exp_id=d0985a43-e3d1-4142-9c40-8006e3f3ebaa-50&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000007734516523%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/33039182740.html?spm=a2g0o.productlist.0.0.7a2d31f48fE7BP&amp;amp;algo_pvid=d0985a43-e3d1-4142-9c40-8006e3f3ebaa&amp;amp;algo_exp_id=d0985a43-e3d1-4142-9c40-8006e3f3ebaa-50&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000007734516523%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Keycaps
&lt;/h3&gt;

&lt;p&gt;Busca unas que te gusten, pero cualquiera te valdrá&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/4000162860270.html?spm=a2g0o.detail.0.0.1cd527ccJqppOo&amp;amp;gps-id=pcDetailBottomMoreThisSeller&amp;amp;scm=1007.13339.169870.0&amp;amp;scm_id=1007.13339.169870.0&amp;amp;scm-url=1007.13339.169870.0&amp;amp;pvid=d52b008a-a758-4061-ad88-789fe13d786d&amp;amp;_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:d52b008a-a758-4061-ad88-789fe13d786d,tpp_buckets:668%230%23131923%2337_668%230%23131923%2337_668%23888%233325%238_668%23888%233325%238_668%232846%238109%231935_668%235811%2327173%2315_668%236421%2330823%23267_668%232717%237564%23655_668%231000022185%231000066058%230_668%236808%2332776%23775_668%233468%2315612%23384_668%232846%238109%231935_668%235811%2327173%2315_668%236421%2330823%23267_668%232717%237564%23655_668%233164%239976%23533_668%236808%2332776%23775_668%233468%2315612%23384&amp;amp;&amp;amp;pdp_ext_f=%7B%22sceneId%22:%223339%22,%22sku_id%22:%2210000000539869245%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/4000162860270.html?spm=a2g0o.detail.0.0.1cd527ccJqppOo&amp;amp;gps-id=pcDetailBottomMoreThisSeller&amp;amp;scm=1007.13339.169870.0&amp;amp;scm_id=1007.13339.169870.0&amp;amp;scm-url=1007.13339.169870.0&amp;amp;pvid=d52b008a-a758-4061-ad88-789fe13d786d&amp;amp;_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:d52b008a-a758-4061-ad88-789fe13d786d,tpp_buckets:668%230%23131923%2337_668%230%23131923%2337_668%23888%233325%238_668%23888%233325%238_668%232846%238109%231935_668%235811%2327173%2315_668%236421%2330823%23267_668%232717%237564%23655_668%231000022185%231000066058%230_668%236808%2332776%23775_668%233468%2315612%23384_668%232846%238109%231935_668%235811%2327173%2315_668%236421%2330823%23267_668%232717%237564%23655_668%233164%239976%23533_668%236808%2332776%23775_668%233468%2315612%23384&amp;amp;&amp;amp;pdp_ext_f=%7B%22sceneId%22:%223339%22,%22sku_id%22:%2210000000539869245%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cable USB
&lt;/h3&gt;

&lt;p&gt;Normalmente, cualquier USB - C es válido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Construir tu teclado a partir de un kit
&lt;/h2&gt;

&lt;p&gt;Esto es evidentemente más sencillo e incluso más económico, existen kits para construir tu propio teclado y de hecho hay muchas marcas que te venden un teclado construido con este kit.&lt;br&gt;
&lt;a href="https://es.aliexpress.com/item/4001187066764.html?spm=a2g0o.productlist.0.0.2f06951431ZWKx&amp;amp;algo_pvid=c549c934-2d60-4bd4-a5c2-3a70525bc8ba&amp;amp;algo_exp_id=c549c934-2d60-4bd4-a5c2-3a70525bc8ba-32&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000015198302818%22%7D" rel="noopener noreferrer"&gt;https://es.aliexpress.com/item/4001187066764.html?spm=a2g0o.productlist.0.0.2f06951431ZWKx&amp;amp;algo_pvid=c549c934-2d60-4bd4-a5c2-3a70525bc8ba&amp;amp;algo_exp_id=c549c934-2d60-4bd4-a5c2-3a70525bc8ba-32&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000015198302818%22%7D&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Sobre el ruido
&lt;/h1&gt;

&lt;p&gt;Lo que más asusta a los programadores de oficina es que sus teclados generen tanto ruido que sean molestos para los demás.&lt;/p&gt;

&lt;p&gt;Bueno, un teclado mecánico va a hacer más ruido que uno de membrana, eso es así, quien te diga lo contrario te miente, pero existen switches más silenciosos como los &lt;a href="https://www.cherrymx.de/en/mx-original/mx-silent-red.html" rel="noopener noreferrer"&gt;MX Silent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Además hay técnicas para encapsular el ruido como el &lt;a href="https://switchandclick.com/the-best-dampening-foam-for-a-mechanical-keyboard/" rel="noopener noreferrer"&gt;foam&lt;/a&gt;  o también hay quien le pone unos &lt;a href="https://es.aliexpress.com/item/1005001825903484.html?spm=a2g0o.productlist.0.0.1aa413bafcap6j&amp;amp;algo_pvid=b77bd4a1-6889-43a5-88dc-3cee248fafdf&amp;amp;aem_p4p_detail=202108170553408369265514355520000737216&amp;amp;algo_exp_id=b77bd4a1-6889-43a5-88dc-3cee248fafdf-6&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000017755517184%22%7D" rel="noopener noreferrer"&gt;silenciadores independientes a cada switch&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Con todo esto ¿Que necesitamos saber para comprar un teclado mecánico con el que pasar cientos de horas programando?
&lt;/h1&gt;

&lt;p&gt;Lo primero es un layout con el que nos sintamos cómodos, seguro que conocéis a muchos programadores que han pasado a usar un layout ANSI, esto es porque las teclas especiales que se usan en la mayoría de lenguajes de código están mucho más accesibles en un teclado ANSI, al principio es duro y entiendo que quieras seguir con tu teclado ISO, eso es decisión tuya, pero ya te digo que merece la pena el esfuerzo inicial, con el tiempo, ganas mucha velocidad.&lt;/p&gt;

&lt;p&gt;Los switches tienen que ser aptos para pasar muchas horas escribiendo, así que lo ideal son unos switches te activació no muy dura, hay algunos que necesitan ejercer más presión que otros para funcionar. Una buena opción, dentro de los convencionales serían los Cherry brown o los gateron brown, pero hay mucho más mundo ahí fuera, switches Tealios V2, Holy panda (los que yo uso)...&lt;/p&gt;

&lt;p&gt;Tema ruido es importante, aplica alguna de las técnicas que hemos mencionado antes o busca unso switches silenciosos como los MX Silent.&lt;/p&gt;

&lt;p&gt;Conectividad, A mi no me gustan los cables, así que uso teclados bluetooth, si vas a hacer esto, te recomiendo una buena marca, seguro que tiene mejores baterías y conectividad.&lt;/p&gt;

&lt;p&gt;Retroiluminación: Yo odio las luces de colores, pero me encanta programar por las noches, así que es ideal un teclado que se pueda iluminar, incluso, lo mejor es que el texto de la tecla también se pueda iluminar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gadgetreview.com%2Fwp-content%2Fuploads%2F2020%2F01%2Fbest-backlit-keyboards.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gadgetreview.com%2Fwp-content%2Fuploads%2F2020%2F01%2Fbest-backlit-keyboards.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Personalmente opto por una luz blanca o azul.&lt;/p&gt;

&lt;p&gt;Por último, los materiales, un teclado plasticoso malo no te va a dar la misma experiencia que uno forjado y martillado en un yunque asgardiano enfriado en meado de Odin.&lt;/p&gt;

&lt;p&gt;PD: Algunas marcas que me gustan.&lt;br&gt;
&lt;a href="https://www.melgeek.com/" rel="noopener noreferrer"&gt;https://www.melgeek.com/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://iqunix.store/" rel="noopener noreferrer"&gt;https://iqunix.store/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.keychron.com/" rel="noopener noreferrer"&gt;https://www.keychron.com/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>4 Maneras de llamar a una API Rest con JavaScript</title>
      <dc:creator>VikingCodeBlog</dc:creator>
      <pubDate>Mon, 05 Apr 2021 18:04:29 +0000</pubDate>
      <link>https://dev.to/vikingcodeblog/4-maneras-de-llamar-a-una-api-rest-con-javascript-2nhm</link>
      <guid>https://dev.to/vikingcodeblog/4-maneras-de-llamar-a-una-api-rest-con-javascript-2nhm</guid>
      <description>&lt;h1&gt;
  
  
  ¿Qué es una API Rest?
&lt;/h1&gt;

&lt;p&gt;Antes de ver 4 Maneras de llamar a una API Rest con JavaScript, es posible que no conozcas que es esto de las API Rest, así que para ello, te comparto una definición que da &lt;a href="https://www.bbvaapimarket.com/es/mundo-api/api-rest-que-es-y-cuales-son-sus-ventajas-en-el-desarrollo-de-proyectos/" rel="noopener noreferrer"&gt;BBVAAPIMarket&lt;/a&gt;, en esencia, una API Rest, es una interfaz que nos permite comunicarnos con otra aplicación que espera que hagamos una petición, puede ser para obtener datos, añadir datos, borrar…&lt;/p&gt;

&lt;h1&gt;
  
  
  Un Ejemplo
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokéApi&lt;/a&gt; es una API de prueba con temática nintendera, nos proporciona varias rutas como esta «&lt;a href="https://pokeapi.co/api/v2/pokemon/ditto%C2%BB" rel="noopener noreferrer"&gt;https://pokeapi.co/api/v2/pokemon/ditto»&lt;/a&gt; la cual nos proporciona los datos del pokemon Ditto.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h6h2wu9etp0lrvjuo3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h6h2wu9etp0lrvjuo3b.png" alt="Manera de llamar a una API Rest con JavaScript PokéApi"&gt;&lt;/a&gt;&lt;br&gt;
Puedes probar esta ruta simplemente desde tu navegador. Con ella obtenemos un JSON con todos los datos del pokemon.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno63o02xaznfu3ksc9gq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno63o02xaznfu3ksc9gq.png" alt="Primera manera de llamar a una API Rest con JavaScript Navegador"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Maneras de llamar a una API Rest con JavaScript
&lt;/h2&gt;

&lt;p&gt;Ahora sí, vamos a ver 4 Maneras de llamar a una API Rest con JavaScript, todas ellas son válidas, iré opinando sobre ellas mientras te las muestro.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. XMLHttpRequest (AJAX)
&lt;/h3&gt;

&lt;p&gt;La primera forma de obtener datos que vamos a ver, va a ser mediante &lt;a href="https://developer.mozilla.org/es/docs/Web/API/XMLHttpRequest" rel="noopener noreferrer"&gt;XMLHttpRequest&lt;/a&gt;, un objeto de JavaScript que fue diseñado por Microsoft y adoptado por Mozilla, Apple y Google.&lt;/p&gt;

&lt;p&gt;Es un &lt;a href="https://www.w3.org/TR/XMLHttpRequest/" rel="noopener noreferrer"&gt;estándar de la W3C&lt;/a&gt;. Seguro que has oído hablar de la programación AJAX (Asynchronous JavaScript And XML), Esto era una forma de programar usando un conjunto de tecnologías que te permitían crear páginas más dinámicas, al hacer peticiones al backend para obtener datos nuevos sin tener que recargar la página al completo.&lt;/p&gt;

&lt;p&gt;AJAX suena increíble ya que hoy en día todas las páginas webs hacen peticiones al backend sin necesidad de recargar la página actual pero estamos hablando de un término creado en 2005.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="c1"&gt;// Creamos un nuevo XMLHttpRequest&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;xhttp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;XMLHttpRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Esta es la función que se ejecutará al finalizar la llamada&lt;/span&gt;
&lt;span class="nx"&gt;xhttp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onreadystatechange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Si nada da error&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readyState&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// La respuesta, aunque sea JSON, viene en formato texto, por lo que tendremos que hace run parse&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseText&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Endpoint de la API y método que se va a usar para llamar&lt;/span&gt;
&lt;span class="nx"&gt;xhttp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;xhttp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Si quisieramos mandar parámetros a nuestra API, podríamos hacerlo desde el método send()&lt;/span&gt;
&lt;span class="nx"&gt;xhttp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;De esta manera obtenemos el siguiente resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdw6jh132vmmqmty11ax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdw6jh132vmmqmty11ax.png" alt="JSON resultante al llamar a la API Rest"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fetch
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/API/Fetch_API" rel="noopener noreferrer"&gt;Fetch&lt;/a&gt; es una nueva implementación de JavaScript, nos permite hacer lo mismo que &lt;strong&gt;XMLHttpRequest&lt;/strong&gt; pero de manera más sencilla, el único defecto que le puedo ver es que al ser tan nueva, no funciona en internet Explorer, pero bueno, esto es un problema soportable para casi cualquier proyecto moderno.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Con solo estas líneas estaríamos obteniendo el mismo resultado que en el código anterior con XMLHttpRequest, no es necesario importar ni instanciar fetch, simplemente se le llama😮.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Axios
&lt;/h3&gt;

&lt;p&gt;Hasta ahora, tanto &lt;strong&gt;XMLHttpRequest&lt;/strong&gt; como &lt;strong&gt;Fetch&lt;/strong&gt; eran nativas de JavaScript, pero &lt;a href="https://github.com/axios/axios" rel="noopener noreferrer"&gt;Axios&lt;/a&gt; es una librería externa que tendremos que importar en nuestro proyecto antes de usarla.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/axios/dist/axios.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Una vez importada, podrás usarla en tu proyecto.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// función que se ejecutará al recibir una respuesta&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// función para capturar el error&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// función que siempre se ejecuta&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  ¿Por qué se usa tanto Axios? Parece que Fetch es perfecto ¿para que iba a querer importar otra librería a mi proyecto?
&lt;/h4&gt;

&lt;p&gt;El primer motivo es sencillo, Fetch es nuevo y no puede implementarse en proyectos que sigan usando tecnologías viejas, algunas veces está limitado, mientras que Axios tiene muy buena compatibilidad.&lt;/p&gt;

&lt;p&gt;Pero hay más motivos, por ejemplo, Axios te permite añadir un timeout a la llamada para que se cierre cuando lleva un rato intentando obtener datos sin éxito.&lt;/p&gt;

&lt;p&gt;Otro motivo muy importante es que Axios parsea automáticamente las respuestas JSON.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="c1"&gt;// axios&lt;/span&gt;
&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// response.data ya es un JSON&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// fetch()&lt;/span&gt;
&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;    &lt;span class="c1"&gt;// a fetch le llega una respuesta en string que tiene que ser parseada a JSON&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Axios tiene más funcionalidades como los interceptores, que te permiten interceptar las llamadas y reaccionar a ellas, esto se usa por ejemplo cuando nuestro backend tiene un sistema de seguridad que necesita que las llamadas lleven un token, podemos meterle el token a la llamada desde un interceptor para no tener que picarlo en código cada vez que lo vayamos a usar.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;interceptors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Aquí podríamos hacer algo con la llamada antes de enviarla&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Se ha enviado algo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// llamada común&lt;/span&gt;
&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Creo que me he detenido demasiado tiempo en Axios, pero me interesaba hacer un pequeño análisis de por que es la librería que más he visto en los proyectos por los que he pasado.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. jQuery.Ajax()
&lt;/h3&gt;

&lt;p&gt;Obviamente si queremos hacer este tipo de llamadas, tendremos que importar la librería de &lt;a href="https://jquery.com/" rel="noopener noreferrer"&gt;jQuery&lt;/a&gt; a nuestro proyecto.&lt;/p&gt;

&lt;p&gt;jQuery es una librería que muchos dan por muerta, pero creo que todavía le queda mucho recorrido, no hay más que ver las encuestas de &lt;a href="https://insights.stackoverflow.com/survey/2020#most-popular-technologies" rel="noopener noreferrer"&gt;StackOverflow&lt;/a&gt; o &lt;a href="https://2020.stateofjs.com/en-US/other-tools/" rel="noopener noreferrer"&gt;StateOfJs&lt;/a&gt;, sigue siendo una de las librerías/frameworks más usados, por lo que creo que es necesario conocer esta manera de llamar a una API Rest con jquery.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ajax&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;dataType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Realmente es un método bastante sencillo de utilizar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Poniendo la teoría en práctica
&lt;/h2&gt;

&lt;p&gt;Vamos a hacer uso de la API de PokéApi para obtener datos y pintar nuestra propia Pokedex.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"es"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;http-equiv=&lt;/span&gt;&lt;span class="s"&gt;"X-UA-Compatible"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"IE=edge"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preconnect"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://fonts.gstatic.com"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&amp;amp;display=swap"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"head"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Pokedex&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ececec&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Ubuntu'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.head&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;187&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;49&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;#container&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1000px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;space-between&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.card&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;230px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#6e6e6e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;500&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="c1"&gt;// Obtenemos los datos de todos los pokemon &lt;/span&gt;
&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;printPokemons&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Pinta todos los pokemos insertando un HTML dentro del #container&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;printPokemons&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pokemons&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;container&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;container&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;pokemons&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;container&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
    &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;container&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    &amp;lt;div class="card"&amp;gt;
    &amp;lt;img src="https://pokeres.bastionbot.org/images/pokemon/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;getPokemonId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;.png"/&amp;gt;
    &amp;lt;span&amp;gt;Nº.&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;getPokemonId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/span&amp;gt;
    &amp;lt;h2&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/h2&amp;gt;
    &amp;lt;/card&amp;gt;
  `&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// En esta ruta de la API no nos viene el id de cada pokemon, pero si que nos viene&lt;/span&gt;
&lt;span class="c1"&gt;// una URL, para poder obtener todos los datos de ese pokemon, la cual contiene su ID&lt;/span&gt;
&lt;span class="c1"&gt;// así que le extraigo el ID a la URL&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getPokemonId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://pokeapi.co/api/v2/pokemon/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;El resultado es el siguiente.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F038s03dy4gwk8ror60r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F038s03dy4gwk8ror60r2.png" alt="Resultado pokedex"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Más maneras de llamar a una API Rest desde JavaScript.
&lt;/h2&gt;

&lt;p&gt;Me parece interesante destacar otras maneras de llamar a una API Rest usando JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  HttpClient
&lt;/h3&gt;

&lt;p&gt;En el caso del framework de desarrollo Angular, se nos proporciona una librería para hacer llamadas a este tipo de servicios.&lt;/p&gt;

&lt;p&gt;La librería &lt;a href="https://angular.io/guide/http" rel="noopener noreferrer"&gt;HttpClient&lt;/a&gt; de Angular es muy potente, interceptores, testing, integrada con TypeScript… La verdad que dudo de que alguien use otra librería en proyectos de Angular.&lt;/p&gt;

&lt;h3&gt;
  
  
  SuperAgent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/visionmedia/superagent" rel="noopener noreferrer"&gt;SuperAgent&lt;/a&gt; es una librería muy ligera, bastante similar a Axios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Request
&lt;/h3&gt;

&lt;p&gt;No conozco mucho &lt;a href="https://github.com/request/request" rel="noopener noreferrer"&gt;Request&lt;/a&gt;, pero he visto muchas librerías de empresas que se basan en ella para implementar alguna funcionalidad propia, no se si será por algo en especial o simplemente es casualidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;Uso fetch siempre que voy a desarrollar un ejemplo para el blog, pero realmente si quisiera crear un proyecto entero con JavaScript, Axios sería mi primera opción ya que tiene varias funcionalidades muy sencillas y potentes.&lt;/p&gt;

&lt;p&gt;jQuery.Ajax, no creo que la use ya que no trabajo en proyectos que contengan esa librería, pero nunca se sabe.&lt;/p&gt;

&lt;p&gt;Y XMLHttpRequest, ahora que Microsoft ha matado internet Explorer, creo que ya no será necesario y pondré a fetch por delante.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>angular</category>
      <category>react</category>
    </item>
  </channel>
</rss>
