Estoy tratando de obtener algunos datos de API públicas usando curl:
curl --request GET 'https://api.openweathermap.org/data/2.5/weather?lat=37.3565982&lon=-121.9689848&units=imperial' \ --header 'X-Api-Key: x-api-'key \ --data 'output_format=csv' \ > save_file.csv
y si estoy ejecutando el comando en la terminal, está devolviendo el resultado y todo funciona bien, pero si estoy tratando de agregar un parámetro adicional para descargar el resultado en un formato .csv, está generando el archivo pero el formato interno es incorrecto, Quiero decir que no se agrega como un formato de tabla, sino más bien como una matriz de objetos [{}, {}, {}]
, etc.
¿Es posible ejecutar un comando curl y obtener los datos en formato csv?
--data
es cómo agrega datos del cuerpo a una solicitud POST. Está realizando una solicitud GET.
La documentación de la API para el servicio web que está utilizando dice:
modo formato de respuesta opcional. Los valores posibles son xml y html. Si no usa el formato de parámetro de modo, JSON es el predeterminado. Aprende más
Entonces, para recuperar algo que no sea JSON del servidor, debe poner mode=something
en la cadena de consulta y solo XML y HTML son opciones.
No es output_format
.
No entra en el cuerpo.
CSV no es una opción.
Si desea poner esos datos en formato CSV, deberá transformarlos localmente. El formato de datos descrito en la documentación no parece que se preste a las estructuras de datos 2D descritas por CSV, por lo que tendrá que tomar decisiones sobre cómo transformarlo.
Has etiquetado este javascript para que puedas canalizar la salida de curl
a un programa que ejecutas con Node.js que analiza el JSON , lo reestructura como quieras y luego usa un módulo como papaparse para convertirlo a JSON.