Api y Api Rest, con javascript y con python

¿Qué es una API?

Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas y protocolos que permite que diferentes aplicaciones se comuniquen entre sí. Es como un intermediario que permite que diferentes aplicaciones se conecten y compartan datos o funcionalidades de manera segura y eficiente1.

¿Qué es una API REST?

Una API REST (Transferencia de Estado Representacional) es un tipo específico de API que sigue ciertos principios y convenciones para el diseño y la implementación de servicios web. REST no es un protocolo, sino un estilo arquitectónico que se basa en el protocolo HTTP y utiliza sus métodos (GET, POST, PUT, DELETE) para realizar operaciones sobre los recursos que la API expone21.

Diferencias entre API y API REST

¿Cómo se crean?

Para crear una API REST, generalmente se siguen estos pasos:

  1. Definir los recursos: Identificar los datos o servicios que la API expondrá.
  2. Diseñar los endpoints: Crear las URLs que permitirán acceder a los recursos.
  3. Implementar los métodos HTTP: Programar las operaciones (GET, POST, PUT, DELETE) que se podrán realizar sobre los recursos.
  4. Configurar el servidor: Utilizar un servidor web (como Node.js, Django, Flask) para manejar las solicitudes y respuestas.
  5. Documentar la API: Proveer documentación clara para que otros desarrolladores puedan utilizar la API correctamente.

Utilidades de una API REST

se pueden obtener recursos de bases de datos como MySQL o MongoDB a través de una API REST! Aquí te explico cómo funciona:

Integración con MySQL

  1. Conexión a la base de datos: Utiliza un controlador o biblioteca específica para conectarte a MySQL desde tu aplicación (por ejemplo, mysql para Node.js o mysql-connector-python para Python).
  2. Consultas SQL: Realiza consultas SQL para obtener, insertar, actualizar o eliminar datos en la base de datos.
  3. Endpoints de la API: Define los endpoints de tu API REST que llamarán a estas consultas SQL y devolverán los resultados en un formato como JSON.

Integración con MongoDB

  1. Conexión a la base de datos: Utiliza una biblioteca como mongoose para Node.js o pymongo para Python para conectarte a MongoDB.
  2. Operaciones CRUD: Realiza operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sobre los documentos en las colecciones de MongoDB.
  3. Endpoints de la API: Define los endpoints de tu API REST que ejecutarán estas operaciones y devolverán los resultados en JSON.

Ejemplo básico en Node.js con Express y MySQL

JavaScript

const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3000;

const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'mydatabase'
});

db.connect((err) => {
  if (err) throw err;
  console.log('Connected to MySQL');
});

app.get('/users', (req, res) => {
  const sql = 'SELECT * FROM users';
  db.query(sql, (err, results) => {
    if (err) throw err;
    res.json(results);
  });
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Ejemplo básico en Node.js con Express y MongoDB

JavaScript

const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = 3000;

mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

const UserSchema = new mongoose.Schema({
  name: String,
  email: String
});

const User = mongoose.model('User', UserSchema);

app.get('/users', async (req, res) => {
  try {
    const users = await User.find();
    res.json(users);
  } catch (err) {
    res.status(500).send(err);
  }
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Estas son implementaciones básicas, pero te dan una idea de cómo puedes integrar una base de datos MySQL o MongoDB con una API REST.

Aquí tienes ejemplos de cómo conectar y trabajar con bases de datos MySQL y MongoDB utilizando Python.

Ejemplo con MySQL y Python

Para trabajar con MySQL en Python, puedes usar la biblioteca mysql-connector-python. Aquí tienes un ejemplo básico:

  1. Instalación:pip install mysql-connector-python
  2. Código:

Python

import mysql.connector

# Conexión a la base de datos
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="mydatabase"
)

cursor = db.cursor()

# Definir un endpoint para obtener usuarios
def get_users():
    cursor.execute("SELECT * FROM users")
    results = cursor.fetchall()
    return results

# Ejemplo de uso
users = get_users()
for user in users:
    print(user)

Ejemplo con MongoDB y Python

Para trabajar con MongoDB en Python, puedes usar la biblioteca pymongo. Aquí tienes un ejemplo básico:

  1. Instalación:pip install pymongo
  2. Código:

Python

from pymongo import MongoClient

# Conexión a la base de datos
client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
users_collection = db["users"]

# Definir un endpoint para obtener usuarios
def get_users():
    users = users_collection.find()
    return list(users)

# Ejemplo de uso
users = get_users()
for user in users:
    print(user)

Integración con Flask para crear una API REST

Puedes integrar estos ejemplos con Flask para crear una API REST.

Con MySQL:

  1. Instalación:pip install flask mysql-connector-python
  2. Código:

Python

from flask import Flask, jsonify
import mysql.connector

app = Flask(__name__)

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="mydatabase"
)

cursor = db.cursor()

@app.route('/users', methods=['GET'])
def get_users():
    cursor.execute("SELECT * FROM users")
    results = cursor.fetchall()
    return jsonify(results)

if __name__ == '__main__':
    app.run(port=5000)

Con MongoDB:

  1. Instalación:pip install flask pymongo
  2. Código:

Python

from flask import Flask, jsonify
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
users_collection = db["users"]

@app.route('/users', methods=['GET'])
def get_users():
    users = users_collection.find()
    return jsonify(list(users))

if __name__ == '__main__':
    app.run(port=5000)

Estos ejemplos te muestran cómo conectar y trabajar con bases de datos MySQL y MongoDB en Python, y cómo exponer estos datos a través de una API REST utilizando Flask. 

Aquí tienes ejemplos de cómo conectar y trabajar con una base de datos SQLite utilizando Python.

Ejemplo con SQLite y Python

Para trabajar con SQLite en Python, puedes usar la biblioteca sqlite3, que viene incluida en la biblioteca estándar de Python.

  1. Instalación: No necesitas instalar nada adicional, ya que sqlite3 viene preinstalado con Python.
  2. Código:

Python

import sqlite3

# Conexión a la base de datos
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()

# Crear una tabla
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT,
        email TEXT
    )
''')

# Insertar datos
cursor.execute('''
    INSERT INTO users (name, email) VALUES (?, ?)
''', ('John Doe', 'john@example.com'))

conn.commit()

# Definir una función para obtener usuarios
def get_users():
    cursor.execute('SELECT * FROM users')
    return cursor.fetchall()

# Ejemplo de uso
users = get_users()
for user in users:
    print(user)

conn.close()

Integración con Flask para crear una API REST

Puedes integrar este ejemplo con Flask para crear una API REST.

  1. Instalación:pip install flask
  2. Código:

Python

from flask import Flask, jsonify
import sqlite3

app = Flask(__name__)

def get_db_connection():
    conn = sqlite3.connect('mydatabase.db')
    conn.row_factory = sqlite3.Row
    return conn

@app.route('/users', methods=['GET'])
def get_users():
    conn = get_db_connection()
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM users')
    users = cursor.fetchall()
    conn.close()
    return jsonify([dict(ix) for ix in users])

if __name__ == '__main__':
    app.run(port=5000)

Estos ejemplos te muestran cómo conectar y trabajar con una base de datos SQLite en Python, y cómo exponer estos datos a través de una API REST utilizando Flask. 

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *