API GraphQL con datos de árboles frutales. Esta API está construida con Apollo Server Lambda + Netlify Lambda.
En este proyecto no estoy utilizando una base de datos. Los datos están en data.js, por si deseas agregar más información. :)
Lee el archivo CONTRIBUTING.md o verifica si existe algún issues, todos los PRs son bienvenidos.
Playground: https://fruits-api.netlify.app/graphql
Web: https://fruit-api.netlify.app/
- Clonar repositorio:
git clone https://github.com/Franqsanz/fruits-api.git
- Entrar al directorio del repositorio:
cd fruits-api
- Instalar todas las dependencias:
npm install
# O con yarn
yarn
- Una vez que instale todas las dependencias ejecute el siguiente comando:
npm start
yarn start
- Ejecutar Testing (opcional):
npm test
yarn test
Alternativamente, puede usar Docker
- Abre tu terminal/herramienta de línea de comandos
- Ejecute
docker-compose up
Una vez ejecutada la API, si todo sale bien debe ver en su terminal el siguiente mensaje: Lambda server is listening on 9000
, abra su navegador y coloque en la URL http://localhost:9000/graphql
y esto cargará el GraphQL Playground, debería ver lo siguiente:
Obviamente que el playground estará vacío usted deberá hacer las consultas.
Esta documentación lo ayudará a familiarizarse con los recursos de Fruits API y le mostrará cómo hacer diferentes consultas.
Key | Type | Description |
---|---|---|
id | ID | ID del árbol |
scientific_name | String | Nombre científico del árbol |
tree_name | String | Nombre del árbol |
fruit_name | String | Nombre de la fruta |
family | String | Tipo de familia del árbol |
origin | String | Origen del árbol |
description | String | Breve descripción de árbol |
bloom | String | Fecha de floración del árbol |
maturation_fruit | String | Fecha de maduración del fruto |
life_cycle | String | Ciclo de vida del árbol |
climatic_zone | String | Zona climática del árbol |
producing_countries | Array | Países que producen los árboles frutales. |
Puede acceder a la lista de los árboles con la siguiente query
Query de ejemplo:
query allFruits {
fruits {
id
scientific_name
fruit_name
description
producing_countries {
country
}
}
}
Respuesta:
{
"data": {
"fruits": [
{
"id": "1",
"scientific_name": "Malus Domestica",
"fruit_name": "Manzana",
"description": "La manzana es el fruto del manzano, árbol de la familia de las rosáceas. Es una fruta pomácea de forma redonda y sabor más o menos dulce, dependiendo de la variedad. La manzana es un árbol caducifolio, generalmente de 2 a 4,5 m (6 a 15 pies) de altura en cultivo y hasta 9 m (30 pies) en la naturaleza.",
"producing_countries": [
{
"country": "China",
},
{
"country": "Estados Unidos",
},
// ...
]
},
{
"id": "2",
"scientific_name": "Pyrus Communis",
"fruit_name": "Pera",
"description": "La pera es el fruto del peral, árbol de la familia de las rosáceas. El fruto es un pomo comestible de verde marrón. Es una especie de árbol caducifolio, generalmente de 2 hasta 20 m de altura.",
"producing_countries": [
{
"country": "China",
},
{
"country": "Italia",
},
// ...
]
},
// ...
]
}
}
Puede obtener un solo árbol agregando el id
como parámetro: (id: 5)
.
Query de ejemplo:
query oneFruit {
fruit(id: 5) {
id
scientific_name
tree_name
fruit_name
family
}
}
Respuesta:
{
"data": {
"fruit": {
"id": "5",
"scientific_name": "Citrus x Tangerina",
"tree_name": "Mandarino",
"fruit_name": "Mandarina",
"family": "Rutáceae"
}
}
}
También puede filtrar los árboles por family
o por origin
, por ejemplo: (family: "Rosaceae")
o (origin: "Asia")
.
Query de ejemplo:
query filterFruit {
filterFruitsFam(family: "Rosaceae") {
id
tree_name
fruit_name
family
}
}
Respuesta:
{
"data": {
"filterFruitsFam": [
{
"id": "1",
"tree_name": "Manzano",
"fruit_name": "Manzana",
"family": "Rosaceae"
},
{
"id": "2",
"tree_name": "Peral",
"fruit_name": "Pera",
"family": "Rosaceae"
}
]
}
}
En esta API se pueden hacer Mutaciones, aunque los datos no se guardarán de forma persistente. Puedes agregar, actualizar y eliminar.
⚠ Todos los campos son obligatorios.
mutation addFruit {
addFruit(
id: 1
scientific_name: "Malus Domestica"
tree_name: "Manzano"
fruit_name: "Manzana"
family: "Rosaceae"
origin: "Asia Central"
description: "La RosaceaeRosaceaemanzana es el fruto del manzano, árbol de la familia de las rosáceas. Es una fruta pomácea de forma"
bloom: "Primavera"
maturation_fruit: "Finales del verano o otoño"
life_cycle: "60-80 años"
climatic_zone: "Frio"
) {
id
scientific_name
tree_name
fruit_name
family
origin
description
bloom
maturation_fruit
life_cycle
climatic_zone
}
}
mutation updateFruit {
updateFruit(
id: 1
scientific_name: "Malus Domestica"
tree_name: "Manzano"
fruit_name: "Manzana"
family: "Rosaceae"
origin: "Asia Central"
description: "La Rosaceae manzana es el fruto del manzano, árbol de la familia de las rosáceas. Es una fruta pomácea de forma"
bloom: "Primavera"
maturation_fruit: "Finales del verano o otoño"
life_cycle: "60-80 años"
climatic_zone: "Frio"
) {
id
scientific_name
tree_name
fruit_name
family
origin
description
bloom
maturation_fruit
life_cycle
climatic_zone
}
}
mutation deleteFruit {
deleteFruit(id: 9) {
id
scientific_name
}
}
Hecho con ❤ por
Franco Andrés Sánchez