Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

228
Vistas
Synology NAS API obtenga espacio total y gratuito

Estoy intentando llamar a la API de un Synology NAS para recuperar información sobre el espacio libre y el espacio total disponible.

Mi inicio de sesión funciona y obtengo mi token, las solicitudes con ese token se muestran como "exitosas".

Sin embargo, cuando trato de llamar al método list_share , con el valor additional establecido en volume_status que, según la documentación de la API, debería darme los datos deseados, todo lo que obtengo es:

 { "data": { "offset": 0, "shares": [], "total": 0 }, "success": true }

La petición que hago es:

https://NAME:5001/webapi/entry.cgi?api=SYNO.FileStation.List&version=2&method=list_share&additional=volume_status&_sid=TOKEN

¿Estoy haciendo la solicitud incorrecta? ¿Necesito cambiar el método de list_share a list ? ¿Estoy pasando mal el valor additional ?

La documentación que estoy usando se puede encontrar al buscar en Google ' API de descanso de Synology NAS '. Inserté el enlace de descarga directa para el PDF aquí .

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De acuerdo con la documentación vinculada, el parámetro adicional necesita corchetes y comillas adicionales como esta:

https://NAME:5001/webapi/entry.cgi?api=SYNO.FileStation.List&version=2&method=list_share&additional=["volume_status"]&_sid=TOKEN

Dependiendo de la biblioteca que use, es posible que deba codificar los corchetes y las comillas, pero la mayoría de las bibliotecas deberían hacerlo por usted :)


Para llegar a esa conclusión, esto es lo que hice:

En la documentación vinculada, encontré la sección sobre list_share y el ejemplo proporcionado:

GET /webapi/entry.cgi?api=SYNO.FileStation.List&version=2&method=list_share& additional=%5B%22real_path%22%2C%22owner%2Ctime%22%5D

Esto es completamente ilegible, ya que la url ya está codificada, pero al abrir la consola del navegador y ejecutar

decodeURIComponent("/webapi/entry.cgi?api=SYNO.FileStation.List&version=2&method=list_share&additional=%5B%22real_path%22%2C%22owner%2Ctime%22%5D")

me lleva a una url legible:

/webapi/entry.cgi?api=SYNO.FileStation.List&version=2&method=list_share&additional=["real_path","owner,time"]


Este es un ejemplo, cómo iniciar sesión, imprimir los datos y cerrar sesión nuevamente:

 const http = require("http"); // Helper function to get JSON from an endpoint function getJson(url) { return new Promise((resolve, reject) => { http.get(url, (res) => { res.setEncoding("utf8"); let rawData = ""; res.on("data", (chunk) => { rawData += chunk; }); res.on("end", () => { try { const parsedData = JSON.parse(rawData); resolve(parsedData); } catch (e) { reject(e); } }); }); }); } (async () => { const host = "synology:5000"; const user = "userHere"; const password = "passwordHere"; // login const { data: { sid }, } = await getJson( `http://${host}/webapi/query.cgi?api=SYNO.API.Auth&method=login&version=3&account=${user}&passwd=${password}&session=test&format=sid` ); const url = `http://${host}/webapi/query.cgi?api=SYNO.FileStation.List&method=list_share&version=2&_sid=${sid}&additional=["volume_status"]`; const { data } = await getJson(url); data.shares.forEach((share) => { console.log(share.name, "-", share.path); console.log(share.additional.volume_status); }); //logout await getJson( `http://${host}/webapi/query.cgi?api=SYNO.API.Auth&method=logout&version=3&session=test` ); })();
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda