No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

13 Días
17 Hrs
51 Min
28 Seg

Implementar un REST API con GitHub Copilot

3/13
Recursos

Automatizar la codificación con GitHub Copilot puede parecer todo un desafío, pero este apasionante mundo está a tan solo unos clicks de transformar tu proceso de codificación.

Este efectivo asistente AI, desarrollado por GitHub, no solo genera ensayos de código basados en nuestros prompts, sino que también mejora nuestra eficiencia al escribir el código mucho más rápido y funcional. ¡Comenzamos!

¿Cómo iniciar un prompt en GitHub Copilot?

Al trabajar con GitHub Copilot, el primer paso para iniciar el proceso de codificación es ingresar un prompt en nuestro editor de texto. Intuitivamente, le pediremos en lenguaje natural que nos ayude a crear la función deseada. En este ejemplo, solicitamos una función que se connecta como cliente a una API en línea y retorna el resultado de la consulta en un array asociativo:

bash "escribe una función que se conecte a una API online y devuelva el resultado de la consulta en un array asociativo" Aquí, GitHub Copilot nos asistirá con una sugerencia de texto para lograr nuestro objetivo.

¿Cómo aplicar y probar la sugerencia de GitHub Copilot?

Una vez que recibimos la sugerencia de nuestro asistente, simplemente damos Enter y el asistente nos proporcionará la función resultante. Para probarla, hacemos un llamado a esa función, con el nombre que nos sugiere, y pasamos una URL por parámetro. Al recibir el resultado de esta función, lo guardamos con el nombre "result". Nuestro siguiente paso será visualizar este resultado.

¿Cómo visualizar la información en el caso particular de una consulta de API?

Aquí haremos un cambio en la API porque ahora queremos utilizar la información relacionada con los posts. Luego, le pediremos una segunda función a GitHub Copilot:

bash "crea una función para mostrar el array asociativo de get API en una tabla HTML"

Con la sugerencia de la función ShowTable, podremos visualizar la información en una tabla HTML. Al volver a probar, veremos que los datos de la API se muestran de manera organizada en una tabla HTML. Esta función también se ha creado con la ayuda de GitHub Copilot, y entrega exactamente lo que esperábamos: una tabla de HTML organizando la información devuelta por la API.

¿Cómo hacer una mejora en el código con GitHub Copilot?

Finalmente, se podrán hacer mejoras en el código a través de los prompts. En nuestro último ejemplo, creamos una nueva función para reemplazar los valores numéricos del resultado de la API por un texto indicativo. Usamos un prompt similar al anterior:

bash "crea una función que procese el resultado de get API y si detecta que hay valores numéricos los reemplace por un texto que sea 'es numérico'" GitHub Copilot nos proporcionó la función ReplaceNone, que procesa el array asociativo y reemplaza los valores numéricos por el texto indicado. Después de implementar y probar este código, vemos que efectivamente se realiza el reemplazo deseado.

GitHub Copilot se ha demostrado como una herramienta eficiente y de gran ayuda para facilitar nuestro proceso de codificación. Sin embargo, siempre es importante validar con tu conocimiento y experiencia cada generación de nuevo código. ¡Ahora te animamos a probar esta novedosa herramienta con otros lenguajes de programación!

Aportes 23

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

https://jsonplaceholder.typicide.com es una pagina que ofrece varios tipos de respuestas en formato json para usar como placeholder

En VSCode para que nos de una recomendación de código con python iniciamos un comentario utilizando el signo # y al precionar enter nos da la recomendación de código para aceptar la recomendación utilizamos “Tab”.

Código python con Copilot

Esto sera maravilloso para web scrapping

Acá te dejo una lista de atajos de teclado para usar Github Copilot ;) ```js | Atajo | Descripción | |------------------|-----------------------------------------------------------| | Tab | Aceptar una sugerencia (nombre del comando: editor.action.inlineSuggest.commit) | | Esc | Descartar una sugerencia (nombre del comando: editor.action.inlineSuggest.hide) | | Alt + ] | Mostrar una nueva sugerencia (nombre del comando: editor.action.inlineSuggest.showNext) | | Alt + [ | Mostrar la anterior sugerencia (nombre del comando: editor.action.inlineSuggest.showPrevious) | | Alt + \ | Activar sugerencia (nombre del comando: editor.action.inlineSuggest.trigger) | | Ctrl + Enter | Abrir GitHub Copilot (sugerencias adicionales en un panel separado) | ```

Es increíble, me encanta lo que se puede hacer tan simplemente.

Código en Python:

import requests
import json

def consultar_api(url):
    response = requests.get(url)
    response.raise_for_status()  # Lanzar una excepción si hay un error en la solicitud
    result = response.json()
    return result

def procesar_datos(data):
    for row in data:
        for key, value in row.items():
            if isinstance(value, (int, float)):
                row[key] = 'ES NUMERICO'
    return data

def mostrar_tabla(data):
    html = '<table>'
    
    # Mostrar la fila de encabezado con los nombres de las columnas
    html += '<tr>'
    for column_name in data[0]:
        html += f'<th>{column_name}</th>'
    html += '</tr>'
    
    # Mostrar una fila por cada elemento del array
    for row in data:
        html += '<tr>'
        for value in row.values():
            html += f'<td>{value}</td>'
        html += '</tr>'
    
    html += '</table>'
    print(html)

# Ejemplo de uso
url = 'https://api.example.com/data'  # Reemplaza esto con la URL real de la API
try:
    data = consultar_api(url)
    data_procesada = procesar_datos(data)
    mostrar_tabla(data_procesada)  # Mostrar el resultado procesado en una tabla HTML
except requests.exceptions.RequestException as e:
    print('Error en la solicitud a la API:', e)

La IA generativa ha ayudado a democratizar la programación 🤖🦾. Muchas veces tenemos las ideas y la lógica pero no suficientes conocimientos en el lenguaje para llevarlos a cabo. Ahora plasmando las ideas en un prompt la IA nos ayuda a ser más productivos 🚀🔥✔

Es facinante, parece que lo hace por arte de magia

Le he preguntado a ChatGPT 4 y la respuesta que me ha dado a 9 de Octubre 2023. Escribe una función que se conecte a una API online y devuelva el resultado de la consulta en un array asociativo. \--- Claro, puedo mostrarte un ejemplo de cómo escribir una función en PHP que se conecte a una API en línea y devuelva el resultado en un array asociativo. Este ejemplo utiliza la biblioteca `cURL` para hacer la solicitud HTTP. ```php \ ``` Este es un ejemplo básico y no incluye manejo de errores ni otros aspectos que podrían ser importantes en un entorno de producción. Sin embargo, debería darte una buena idea de cómo empezar.

La version con javascript and un backend con express js:

const app = require("express")();

// Create a method to consume an online API and saves the information in an associative array
const getApiData = async (url) => {
  const response = await fetch(url);
  const data = await response.json();
  return data;
};

// Create a method that process the result of getApiData, and if detects numeric values then replace them with the string "ES NUMERICO"
const processApiData = (data) => {
  for (let i = 0; i < data.length; i++) {
    for (let key in data[i]) {
      if (typeof data[i][key] === "number") {
        data[i][key] = "ES NUMERICO";
      }
    }
  }
  return data;
};

// Create a constant function to convert an associative array to a html table
const arrayToTable = (data) => {
  let table = "<table>";
  table += "<tr>";
  for (let key in data[0]) {
    table += "<th>" + key + "</th>";
  }
  table += "</tr>";
  for (let i = 0; i < data.length; i++) {
    table += "<tr>";
    for (let key in data[i]) {
      table += "<td>" + data[i][key] + "</td>";
    }
    table += "</tr>";
  }
  table += "</table>";
  return table;
};

app.get("/", async (req, res) => {
  const data = await getApiData("https://jsonplaceholder.typicode.com/posts");
  res.send(arrayToTable(processApiData(data)));
});

// Port serving at 3000
app.listen(3000, () => {
  console.log("Server running at port 3000");
});

GitHub Copilot y Tabnine son herramientas de asistencia de código, pero tienen diferencias clave. 1. **Modelo**: GitHub Copilot utiliza la tecnología OpenAI Codex, entrenada con una amplia base de datos de código, mientras que Tabnine se basa en modelos de IA más tradicionales, entrenados principalmente en el código de GitHub. 2. **Integración**: Copilot se integra de manera fluida con editores como Visual Studio Code, ofreciendo sugerencias contextuales en tiempo real. Tabnine es más versátil en términos de integración, funcionando en varios editores y entornos. 3. **Modo de operación**: Copilot genera bloques de código completos y soluciones, mientras que Tabnine sugiere autocompletados y fragmentos de código. Ambas herramientas son útiles, pero la elección dependerá de tus necesidades específicas en el desarrollo.
Opciones gratuitas: Pieces Copilot y Codeium
Hola, Cómo puedo usar Github Copilot con mi usuario de platzi de acuerdo a lo que dicen en este video? Muchas gracias
Se volvió canon de golpe jajaja. Muy buena herramienta complementaria para ahorrar un poco de tiempo. ![](https://static.platzi.com/media/user_upload/m-5a3a2f96-b430-4266-8af4-b6a5a510cc99.jpg)

Pero Visual Studio siempre ha tenido el autocompletado.

Es esencial verificar cuidadosamente cada fragmento de código generado por GitHub Copilot, utilizando tanto tu conocimiento como tu experiencia." Recuerda que la validación es crucial para garantizar la calidad y la seguridad del código generado.

Alguien mas tiene el prpblema que github copilot es demasiado lento ? 😅

Usé los mismos prompts en Chat GPT y estos fueron los resultados:

function consultarAPI($url) {
    // Realizar la solicitud HTTP a la API
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    
    // Decodificar la respuesta JSON en un array asociativo
    $result = json_decode($response, true);
    
    // Verificar si hubo un error en la solicitud
    if ($result === null) {
        throw new Exception('Error en la solicitud a la API: ' . curl_error($ch));
    }
    
    return $result;
}

function mostrarTabla($data) {
    echo '<table>';
    
    // Mostrar la fila de encabezado con los nombres de las columnas
    echo '<tr>';
    foreach (array_keys($data[0]) as $columnName) {
        echo '<th>' . $columnName . '</th>';
    }
    echo '</tr>';
    
    // Mostrar una fila por cada elemento del array
    foreach ($data as $row) {
        echo '<tr>';
        foreach ($row as $value) {
            echo '<td>' . $value . '</td>';
        }
        echo '</tr>';
    }
    
    echo '</table>';
}

function procesarDatos($data) {
    foreach ($data as &$row) {
        foreach ($row as &$value) {
            if (is_numeric($value)) {
                $value = 'ES NUMERICO';
            }
        }
    }
    return $data;
}

// Ejemplo de uso
$url = 'https://api.example.com/data'; // Reemplaza esto con la URL real de la API
try {
    $data = consultarAPI($url);
    $dataProcesada = procesarDatos($data);
    mostrarTabla($dataProcesada); // Mostrar el resultado procesado en una tabla HTML} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

Aquí mi aporte, quise hacer un juego típico de generar un número random y hacer que el usuario lo adivine, si el número ingresado por el usuario no coincide, el programa le dice si es mayor o menor. El programa termina hasta que el usuario adivina el número random. Aquí el código generado por Github Copilot

# Crea un programa que genere un número aleatorio entre 1 y 100
# (sin mostrarlo) y después te pida que lo adivines. Si aciertas
# te felicitará y si no te dirá si el número es mayor o menor

import random

def run():
    number_found = False
    random_number = random.randint(1, 100)

    while not number_found:
        number = int(input('Intenta un número: '))

        if number == random_number:
            print('Felicidades. Encontraste el número')
            number_found = True
        elif number > random_number:
            print('El número es más pequeño')
        else:
            print('El número es más grande')


run()

Código en TypeScript:

import axios from 'axios';

async function consultarAPI(url: string) {
  const response = await axios.get(url);
  return response.data;
}

function procesarDatos(data: Record<string, any>[]) {
  return data.map(row => {
    const processedRow: Record<string, any> = {};
    for (const [key, value] of Object.entries(row)) {
      if (typeof value === 'number') {
        processedRow[key] = 'ES NUMERICO';
      } else {
        processedRow[key] = value;
      }
    }
    return processedRow;
  });
}

function mostrarTabla(data: Record<string, any>[]) {
  let html = '<table>';

  // Mostrar la fila de encabezado con los nombres de las columnas
  html += '<tr>';
  for (const columnName of Object.keys(data[0])) {
    html += `<th>${columnName}</th>`;
  }
  html += '</tr>';

  // Mostrar una fila por cada elemento del array
  for (const row of data) {
    html += '<tr>';
    for (const value of Object.values(row)) {
      html += `<td>${value}</td>`;
    }
    html += '</tr>';
  }

  html += '</table>';
  console.log(html);
}

// Ejemplo de uso
const url = 'https://api.example.com/data'; // Reemplaza esto con la URL real de la API
consultarAPI(url)
  .then((data) => {
    const dataProcesada = procesarDatos(data);
    mostrarTabla(dataProcesada); // Mostrar el resultado procesado en una tabla HTML
  })
  .catch((error) => {
    console.error('Error en la solicitud a la API:', error);
  });

Código en C#:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "https://api.example.com/data"; // Reemplaza esto con la URL real de la API
        try
        {
            var data = await ConsultarAPI(url);
            var dataProcesada = ProcesarDatos(data);
            MostrarTabla(dataProcesada); // Mostrar el resultado procesado en una tabla HTML
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error en la solicitud a la API: {ex.Message}");
        }
    }

    static async Task<List<Dictionary<string, object>>> ConsultarAPI(string url)
    {
        using var client = new HttpClient();
        using var response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();
        var responseContent = await response.Content.ReadAsStringAsync();
        var data = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(responseContent);
        return data;
    }

    static List<Dictionary<string, object>> ProcesarDatos(List<Dictionary<string, object>> data)
    {
        foreach (var row in data)
        {
            foreach (var key in row.Keys.ToList())
            {
                if (row[key] is int || row[key] is double)
                {
                    row[key] = "ES NUMERICO";
                }
            }
        }
        return data;
    }

    static void MostrarTabla(List<Dictionary<string, object>> data)
    {
        Console.WriteLine("<table>");

        // Mostrar la fila de encabezado con los nombres de las columnas
        Console.WriteLine("<tr>");
        foreach (var columnName in data[0].Keys)
        {
            Console.WriteLine($"<th>{columnName}</th>");
        }
        Console.WriteLine("</tr>");

        // Mostrar una fila por cada elemento del array
        foreach (var row in data)
        {
            Console.WriteLine("<tr>");
            foreach (var value in row.Values)
            {
                Console.WriteLine($"<td>{value}</td>");
            }
            Console.WriteLine("</tr>");
        }

        Console.WriteLine("</table>");
    }
}