Estoy tratando de enviar una solicitud "GET" a una API REST remota desde el símbolo del sistema a través de cURL como este:
curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}"
Pero no devuelve ninguna salida. Traté de hacer ping a la URL directamente desde el navegador, puedo obtener una respuesta con éxito, no entiendo cuál es el problema con el comando.
Básicamente, quiero establecer una solicitud "GET" a un servicio REST remoto que me da datos json como respuesta a través de curl. ¿Alguien puede guiarme sobre qué error estoy cometiendo? Probé varias publicaciones, pero todas hablan de solicitudes POST, no de GET.
Respuestas:
Esto debería funcionar :
use la opción -i en lugar de x.
fuente
'server:5050/a/c/getName{"param0":"pradeep"}'
o la otra"server:5050/a/c/getName{\"param0\":\"pradeep\"}"
.Si desea enviar sus datos dentro del cuerpo, debe crear un
POST
o enPUT
lugar deGET
.Para mí, parece que estás tratando de enviar la consulta con parámetros uri , que no está relacionado con
GET
, también puedes activar estos parámetrosPOST
,PUT
y así sucesivamente.Por ejemplo:
fuente
Si realmente desea enviar la solicitud GET con JSON en el cuerpo (por ejemplo, para una solicitud XHR y sabe que el servidor admite el procesamiento del cuerpo en solicitudes GET), puede:
La mayoría de los servidores web modernos aceptan este tipo de solicitud.
fuente
{ "args": {}, "headers": { "Accept": "application/json", "Content-Length": "20", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:57.0) Gecko/20100101 Firefox/57.0" }, "origin": "27.94.235.50, 27.94.235.50", "url": "https://httpbin.org/get" }
No se recibe nada. Necesita usar una cadena de consulta comocurl -X GET https://httpbin.org/get?data=%7B%22param0%22%3A%22pradeep%22%7D
GET toma pares de nombre y valor.
Prueba algo como:
curl http://server:5050/a/c/getName/?param1=pradeep
o
curl http://server:5050/a/c/getName?param1=pradeep
por cierto, un REST regular debería verse algo así como
curl http://server:5050/a/c/getName/pradeep
Si toma JSON en GET URL, no es una forma estándar.fuente
Para servicios protegidos con nombre de usuario y contraseña, utilice lo siguiente
fuente
Tratar
en vez de
Normalmente no necesita esta opción. Todo tipo de solicitudes GET, HEAD, POST y PUT se invocan mediante el uso de opciones de línea de comandos dedicadas.
Esta opción solo cambia la palabra real utilizada en la solicitud HTTP, no altera la forma en que se comporta curl. Entonces, por ejemplo, si desea realizar una solicitud HEAD adecuada, usar -X HEAD no será suficiente. Necesita usar la opción -I, --head.
fuente
Ninguna de las soluciones mencionadas anteriormente funcionó para mí por alguna razón. Aquí está mi solución. Es bastante básico.
API_ENDPOINT es su punto final de API, por ejemplo: http://127.0.0.1:80/api
-H se ha utilizado para agregar contenido de encabezado.
JSON_DATA es el cuerpo de su solicitud, puede ser algo como :: {"data_key": "value"}. '' que rodean JSON_DATA son importantes.
Cualquier cosa después de -d son los datos que debe enviar en la solicitud GET
fuente