Todo desarrollador necesita conocer un montón de herramientas para ser efectivo. cURL en una de esas herramientas 😄
En este artículo, explicaré cómo se puede usar curl para realizar solicitudes HTTP .
cURL se usa básicamente para transferir datos usando Protocolos de Internet para la URL dada.
Curl es un programa del lado del cliente. En el nombre cURL , c significa Cliente y URL indica que curl funciona con URL.
El proyecto curl tiene una línea de comando curl y también una biblioteca libcurl. En este artículo nos centraremos en la línea de comando curl.
Curl se ocupa de un montón de protocolos de Internet como HTTP, FTP, SMTP, TELNET, etc.
En este artículo nos ocuparemos únicamente de realizar solicitudes HTTP desde Curl.
Puede verificar si tiene Curl instalado en su sistema usando el comando.
curl --version
Si Curl no está en su sistema, puede instalarlo desde esta URL https://curl.haxx.se/dlwiz/ .
He creado 2 puntos finales de API REST usando NodeJS . Un punto final admite la solicitud GET y el otro punto final admite la solicitud POST.
En este artículo, llamaremos a los extremos GET y POST usando Curl.
Clona el código de NodeJS en tu local desde este repositorio de github
El repositorio tiene instrucciones sobre cómo clonar y ejecutar el código de NodeJS.
Después de clonar el código, vaya a la carpeta del proyecto e inicie la aplicación con el siguiente comando.
node server.js
La aplicación se ejecuta en el puerto localhost 3000.
La aplicación tiene un punto final GET /sample . Este punto final acepta un parámetro de consulta llamado nombre .
Llamemos a este punto final de API usando curl.
Vaya a un nuevo símbolo del sistema y escriba el siguiente comando
curl http://localhost:3000/sample?name=aditya
Esto dará la siguiente salida
{"text":"Hello aditya"}
También puede obtener un resultado detallado usando Curl. Ejecute el siguiente comando
curl -v http://localhost:3000/sample?name=aditya
-v se usa para obtener una salida detallada.
Esto dará la siguiente salida.
* Trying ::1...* TCP_NODELAY set* Trying 127.0.0.1...* TCP_NODELAY set* Connected to localhost (127.0.0.1) port 3000 (#0)> GET /sample?name=aditya HTTP/1.1> Host: localhost:3000> User-Agent: curl/7.55.1> Accept: */*>< HTTP/1.1 200 OK< Content-Type: application/json< Date: Thu, 15 Nov 2018 12:36:21 GMT< Connection: keep-alive< Content-Length: 23<{"text":"Hello aditya"}* Connection #0 to host localhost left intact
El resultado detallado tiene detalles como el código de estado, el tipo de contenido, la longitud del contenido, etc. Se puede usar para tener una mejor idea de lo que sucedió durante la solicitud HTTP.
El código de estado es 200, lo que indica que la solicitud HTTP fue exitosa.
El tipo de contenido de la respuesta es JSON.
Content-Length indica el tamaño de la respuesta. Aquí el tamaño de la respuesta es de 23 bytes.
La aplicación tiene un punto de conexión POST /test . Este extremo acepta un cuerpo de publicación con el siguiente formato.
{ "value":"nodejs"}
Para realizar la llamada POST, escriba el siguiente comando.
curl --header "Content-Type: application/json" -d "{\"value\":\"node JS\"}" http://localhost:3000/test
–header indica el tipo de contenido del cuerpo de la publicación. Aquí está JSON.
-d se usa para enviar el contenido del cuerpo de la publicación.
La salida de este comando se muestra a continuación.
{"text":"Post Request Value is node JS"}
Para obtener un resultado detallado, use el siguiente comando
curl -v --header "Content-Type: application/json" -d "{\"value\":\"node JS\"}" http://localhost:3000/test
La salida se muestra a continuación.
* Trying ::1...* TCP_NODELAY set* Trying 127.0.0.1...* TCP_NODELAY set* Connected to localhost (127.0.0.1) port 3000 (#0)> POST /test HTTP/1.1> Host: localhost:3000> User-Agent: curl/7.55.1> Accept: */*> Content-Type: application/json> Content-Length: 19>* upload completely sent off: 19 out of 19 bytes< HTTP/1.1 200 OK< Content-Type: application/json< Date: Thu, 15 Nov 2018 13:03:37 GMT< Connection: keep-alive< Content-Length: 41
Los encabezados existentes se pueden modificar usando la opción -H .
Ejecute el siguiente comando para modificar el encabezado de User-Agent a Dummy Agent
curl -v -H "User-Agent:Dummy Agent" http://localhost:3000/sample?name=adi
La salida para el comando anterior se muestra a continuación
* Trying ::1...* TCP_NODELAY set* Trying 127.0.0.1...* TCP_NODELAY set* Connected to localhost (127.0.0.1) port 3000 (#0)> GET /sample?name=adi HTTP/1.1> Host: localhost:3000> Accept: */*> User-Agent:Dummy Agent>< HTTP/1.1 200 OK< Content-Type: application/json< Date: Thu, 15 Nov 2018 13:33:27 GMT< Connection: keep-alive< Content-Length: 20<{"text":"Hello adi"}* Connection #0 to host localhost left intact
En el resultado anterior, se puede ver que User-Agent se ha convertido en Dummy Agent .
Ahora supongamos que desea eliminar el encabezado de host . Esto se puede hacer ejecutando el siguiente comando.
curl -v -H "Host:" http://localhost:3000/sample?name=adi
El resultado del comando anterior se muestra a continuación y se puede ver que Host ya no está allí
* Trying ::1...* TCP_NODELAY set* connect to ::1 port 3000 failed: Connection refused* Trying 127.0.0.1...* TCP_NODELAY set* Connected to localhost (127.0.0.1) port 3000 (#0)> GET /sample?name=adi HTTP/1.1> User-Agent: curl/7.55.1> Accept: */*>< HTTP/1.1 200 OK< Content-Type: application/json< Date: Thu, 15 Nov 2018 13:38:37 GMT< Connection: keep-alive< Content-Length: 20<{"text":"Hello adi"}* Connection #0 to host localhost left intact
-H también se puede usar para agregar nuevos encabezados. Esto se puede hacer usando la sintaxis curl -v -H "newheader: headervalue"
Documentación de cURL: https://ec.haxx.se/
Más información sobre el uso de Curl para solicitudes HTTP https://ec.haxx.se/http.html
Ahora sabe cómo usar cURL para solicitudes HTTP básicas. Este artículo cubre una porción muy pequeña de lo que curl realmente puede hacer.
Para saber más sobre curl, puede consultar los enlaces de documentación que he proporcionado anteriormente.
Me encanta la tecnología y sigo los avances en el campo.
No dude en conectarse conmigo en mi cuenta de LinkedIn https://www.linkedin.com/in/aditya1811/
También puedes seguirme en twitter https://twitter.com/adityasridhar18
Mi sitio web: https://adityasridhar.com/
Publicado originalmente en adityasridhar.com .