Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!