📚 RAE API Go Client

June 29, 2025 · View on GitHub

Go Version Go Report Card License: MIT Build Status

Un cliente Go elegante y eficiente para la rae-api.com, que proporciona acceso programático a definiciones de palabras, significados y conjugaciones verbales del diccionario de la Real Academia Española (RAE).

✨ Características

  • 🚀 API Simple - Interfaz limpia y fácil de usar
  • 📖 Múltiples Significados - Maneja palabras con múltiples acepciones
  • 🔄 Conjugaciones Completas - Todos los tiempos verbales (Indicativo, Subjuntivo, Imperativo)
  • 📝 Definiciones Ricas - Acceso a sinónimos, antónimos, etiquetas de uso
  • Lightweight - Sin dependencias pesadas
  • 🎯 Tipado Fuerte - Estructuras de datos bien definidas

Nota: Este no es un cliente oficial de la RAE. El uso de rae-api.com está sujeto a los términos y condiciones de la API.

📦 Instalación

go get github.com/rae-api-com/go-rae

🚀 Uso Rápido

Ejemplo Básico

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"log"
	"time"

	rae "github.com/rae-api-com/go-rae"
)

func main() {
	// Crear un nuevo cliente
	client := rae.New()
	
	// Configurar timeout
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	
	// Buscar una palabra
	entry, err := client.Word(ctx, "hablar")
	if err != nil {
		log.Fatal(err)
	}
	
	// Mostrar resultado
	data, _ := json.MarshalIndent(entry, "", "  ")
	fmt.Println(string(data))
}

Con Opciones Personalizadas

client := rae.New(
	rae.WithTimeout(10*time.Second),
	rae.WithVersion("v1"),
)

Obtener Palabra Aleatoria

// Palabra aleatoria
randomWord, err := rae.GetRandom(ctx, "production")
if err != nil {
	log.Fatal(err)
}
fmt.Printf("Palabra del día: %s\n", randomWord)

Obtener Palabra Diaria

// Palabra diaria
dailyWord, err := rae.GetDaily(ctx, "production")
if err != nil {
	log.Fatal(err)
}
fmt.Printf("Palabra diaria: %s\n", dailyWord)

📋 Estructura de Respuesta

La API devuelve datos estructurados en el siguiente formato:

{
  "word": "hablar",
  "meanings": [
    {
      "origin": {
        "raw": "Del lat. comedĕre.",
        "type": "lat", 
        "text": "comedĕre"
      },
      "senses": [
        {
          "meaning_number": 1,
          "raw": "1. tr. Masticar...",
          "category": "verb",
          "usage": "common",
          "description": "Masticar y deglutir un alimento sólido.",
          "synonyms": ["masticar", "deglutir"],
          "antonyms": []
        }
      ],
      "conjugations": {
        "non_personal": {
          "infinitive": "hablar",
          "gerund": "hablando", 
          "participle": "hablado"
        },
        "indicative": {
          "present": {
            "singular_first_person": "hablo",
            "singular_second_person": "hablas",
            "singular_third_person": "habla"
            // ... más conjugaciones
          }
        }
        // ... más tiempos verbales
      }
    }
  ]
}

🛠️ API Reference

Tipos Principales

type Client struct {
    // campos internos
}

type Entry struct {
    Word     string    `json:"word"`
    Meanings []Meaning `json:"meanings"`
}

type Meaning struct {
    Origin       Origin       `json:"origin"`
    Senses       []Sense      `json:"senses"`
    Conjugations Conjugations `json:"conjugations,omitempty"`
}

Métodos del Cliente

MétodoDescripciónEjemplo
Word(ctx, word)Busca una palabra específicaclient.Word(ctx, "casa")
GetRandom(ctx, env)Obtiene una palabra aleatoriarae.GetRandom(ctx, "prod")
GetDaily(ctx, env)Obtiene la palabra del díarae.GetDaily(ctx, "prod")

Opciones de Configuración

// Configurar timeout personalizado
rae.WithTimeout(10 * time.Second)

// Configurar versión de la API
rae.WithVersion("v1")

🤝 Contribuir

¡Las contribuciones son bienvenidas! Por favor:

  1. Haz fork del proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Haz commit de tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📝 Licencia

Este proyecto está bajo la Licencia MIT.

🙏 Reconocimientos

  • Este cliente utiliza el servicio rae-api.com, que no está afiliado con la Real Academia Española
  • Todo el contenido del diccionario pertenece a la RAE y está sujeto a sus términos y condiciones
  • Gracias a todos los contribuidores

📧 Soporte

Si encuentras algún problema o tienes sugerencias:


Hecho con ❤️ para la comunidad Go