Tengo una serie de datos para ingresar a la base de datos. La interfaz de usuario para ingresar los datos no es buena para la entrada masiva, así que estoy tratando de formular un equivalente de línea de comando. Cuando examino la solicitud de red de la interfaz de usuario en Chrome, veo una solicitud PUT de un objeto json. Cuando intento replicar la solicitud
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
Me sale un error
curl: (3) [globbing] tirantes anidados no compatibles en la posición X
Donde X es la posición del carácter del primer "[".
¿Cómo puedo PONER un objeto json que incluye una matriz?
Aunque la publicación original tenía otros problemas (es decir, falta la "-d"), el mensaje de error es más genérico.
Esto se debe a que las llaves {} y los corchetes [] son caracteres globales especiales en curl. Para desactivar este globbing, use la opción " -g ".
Por ejemplo, la siguiente consulta de facetas de Solr fallará sin el "-g" para desactivar el globbing de curl :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
fuente
-g
funcionó como se esperaba. Gracias @YonikCabe mencionar que el
Accept
encabezado le dice al servidor algo sobre lo que estamos aceptando, mientras que el encabezado relevante en este contexto esContent-Type
A menudo es recomendable especificar
Content-Type
comoapplication/json
al enviar JSON. Para curl, la sintaxis es:Entonces el comando curl completo será:
fuente
Intente usar comillas simples en lugar de comillas dobles junto con -g
El siguiente escenario funcionó para mí
CON
Esto resolvió especialmente mi error de comando curl error: url incorrecta dos puntos es el primer carácter
fuente
Lo único que ayudó fue usar un archivo de JSON en lugar del texto del cuerpo de json. Basado en Cómo enviar el contenido del archivo como entidad del cuerpo usando cURL
fuente