🚀 Crea APIs REST y GraphQL con MongoDB usando RESTHeart (¡sin escribir código!)

Carlos ExpositoCarlos Exposito
2 min read

¿Y si pudieras tener una API REST o GraphQL lista para usar… en segundos… y sin escribir ni una línea de código?
Con RESTHeart, esto es totalmente posible. Si trabajas con Java y MongoDB, esto puede ser tu nuevo superpoder. 🦸‍♂️


🧩 ¿Qué es RESTHeart?

RESTHeart es un servidor de APIs open source que:

  • Expone tus colecciones MongoDB automáticamente como endpoints REST y GraphQL
  • Incluye autenticación, control de roles, y una API de administración
  • Permite extender con Java cuando necesitas más personalización

Ideal para proyectos que necesitan agilidad o prototipado rápido.


⚙️ Cómo ejecutar RESTHeart

✅ Opción 1: Ejecutar con Java

java -jar restheart.jar

Esto lanza el servidor y se conecta por defecto a MongoDB en localhost:27017.

🐳 Opción 2: Docker + Docker Compose

services:
  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
  restheart:
    image: softinstigate/restheart:latest
    ports:
      - "8080:8080"
    environment:
      MONGO_URI: mongodb://mongodb:27017

Y luego:

docker compose up -d

Cuando todo esté arriba, prueba:

curl localhost:8080/ping

Deberías recibir un simpático: "Greetings from RESTHeart!" 👋


🔐 Autenticación integrada

RESTHeart gestiona usuarios en una colección MongoDB. Por defecto, tienes:

  • Usuario: admin
  • Contraseña: secret
curl -u admin:secret localhost:8080/

Respuesta esperada:

["acl", "users"]

🛠️ CRUD con la REST API

Una vez lanzado, puedes crear y consultar datos directamente con curl.

Crear colección:

curl -u admin:secret -X PUT localhost:8080/posts

Insertar un post:

curl -u admin:secret -X POST localhost:8080/posts \
-d '{"title": "Intro a RESTHeart", "author": "Juan Dev"}' \
-H "Content-Type: application/json"

Consultar:

curl -u admin:secret localhost:8080/posts

🎯 ¿REST no te basta? ¡También GraphQL!

Primero, crea la colección de definiciones:

curl -u admin:secret -X PUT localhost:8080/gql-apps

Luego, define tu schema en un archivo posts.schema:

{
  "_id": "restheart-posts",
  "descriptor": {
    "name": "restheart-posts",
    "uri": "restheart-posts",
    "enabled": true
  },
  "schema": "type Post { title: String author: String } type Query { posts: [Post] }",
  "mappings": {
    "Query": {
      "posts": {
        "db": "restheart",
        "collection": "posts"
      }
    }
  }
}

Cárgalo:

curl -u admin:secret -X POST localhost:8080/gql-apps \\
-d "@posts.schema" \\
-H "Content-Type: application/json"

¡Listo! Ahora puedes consultar con GraphQL:

curl -u admin:secret -X POST localhost:8080/graphql/restheart-posts \\
-d "{ posts { title author } }" \\
-H "Content-Type: application/graphql"

🎉 Conclusión

RESTHeart te permite:

✅ Crear APIs REST y GraphQL con MongoDB ✅ Tener autenticación lista sin escribir lógica ✅ Agregar Java para extender cuando lo necesites

Perfecto para prototipos rápidos o apps que escalan con MongoDB. ¡Échale un vistazo, que merece la pena! 👀

0
Subscribe to my newsletter

Read articles from Carlos Exposito directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Carlos Exposito
Carlos Exposito