> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/appweb-for-juniors/fundamentos-de-apis/practica-gratis.md).

# Practica Gratis

`curl` es una herramienta de línea de comandos muy versátil para realizar solicitudes a servidores web. Se utiliza comúnmente para interactuar con APIs, permitiendo probar y practicar con diferentes métodos HTTP como GET, POST, PUT, DELETE, PATCH, OPTIONS y HEAD. Aquí proporcionamos un cheatsheet de comandos `curl` utilizando una API de práctica pública.

## <mark style="color:green;">API de Práctica</mark>

Para esta cheatsheet, utilizaremos la API pública JSONPlaceholder, una API de prueba que emula un servidor REST para practicar y aprender.

Practica tambien: <https://chatgpt.com/share/b11d2be8-c99f-42e8-a044-88ee0f58a6ac>

## <mark style="color:green;">Comandos</mark> `curl`

### <mark style="color:green;">**1. GET**</mark>

El método GET solicita datos de un servidor.

```bash
curl -X GET https://jsonplaceholder.typicode.com/posts
```

### <mark style="color:green;">**2. POST**</mark>

El método POST envía datos al servidor para crear un nuevo recurso.

```bash
curl -X POST https://jsonplaceholder.typicode.com/posts \
     -H "Content-Type: application/json" \
     -d '{"title": "foo", "body": "bar", "userId": 1}'
```

### <mark style="color:green;">**3. PUT**</mark>

El método PUT actualiza un recurso completo en el servidor.

```bash
curl -X PUT https://jsonplaceholder.typicode.com/posts/1 \
     -H "Content-Type: application/json" \
     -d '{"id": 1, "title": "foo", "body": "bar", "userId": 1}'
```

### <mark style="color:green;">**4. PATCH**</mark>

El método PATCH aplica modificaciones parciales a un recurso en el servidor.

```bash
curl -X PATCH https://jsonplaceholder.typicode.com/posts/1 \
     -H "Content-Type: application/json" \
     -d '{"title": "foo"}'
```

### <mark style="color:green;">**5. DELETE**</mark>

El método DELETE elimina un recurso del servidor.

```bash
curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
```

### <mark style="color:green;">**6. OPTIONS**</mark>

El método OPTIONS describe las opciones de comunicación para el recurso de destino.

```bash
curl -X OPTIONS https://jsonplaceholder.typicode.com/posts/1
```

### <mark style="color:green;">**7. HEAD**</mark>

El método HEAD solicita los encabezados de la respuesta, pero sin el cuerpo.

```bash
curl -I https://jsonplaceholder.typicode.com/posts/1
```

## <mark style="color:green;">Descripción de Comandos</mark>

* <mark style="color:green;">**-X \[METHOD]**</mark><mark style="color:green;">:</mark> Especifica el método HTTP a utilizar (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD).
* <mark style="color:green;">**-H "Content-Type: application/json"**</mark><mark style="color:green;">:</mark> Añade un encabezado a la solicitud, en este caso, especificando que el contenido es JSON.
* <mark style="color:green;">**-d '\[data]'**</mark><mark style="color:green;">:</mark> Incluye los datos a enviar con la solicitud (utilizado principalmente con POST, PUT, PATCH).
* <mark style="color:green;">**-I**</mark><mark style="color:green;">:</mark> Solicita solo los encabezados de la respuesta (utilizado con HEAD).

## <mark style="color:green;">Ejemplos Detallados</mark>

### <mark style="color:green;">**GET: Obtener Todos los Posts**</mark>

```bash
curl -X GET https://jsonplaceholder.typicode.com/posts
```

### <mark style="color:green;">**POST: Crear un Nuevo Post**</mark>

```bash
curl -X POST https://jsonplaceholder.typicode.com/posts \
     -H "Content-Type: application/json" \
     -d '{"title": "foo", "body": "bar", "userId": 1}'
```

### <mark style="color:green;">**PUT: Actualizar un Post Existente**</mark>

```bash
curl -X PUT https://jsonplaceholder.typicode.com/posts/1 \
     -H "Content-Type: application/json" \
     -d '{"id": 1, "title": "foo", "body": "bar", "userId": 1}'
```

### <mark style="color:green;">**PATCH: Modificar Parcialmente un Post**</mark>

```bash
curl -X PATCH https://jsonplaceholder.typicode.com/posts/1 \
     -H "Content-Type: application/json" \
     -d '{"title": "foo"}'
```

### <mark style="color:green;">**DELETE: Eliminar un Post**</mark>

```bash
curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
```

### <mark style="color:green;">**OPTIONS: Obtener las Opciones de Comunicación**</mark>

```bash
curl -X OPTIONS https://jsonplaceholder.typicode.com/posts/1
```

### <mark style="color:green;">**HEAD: Obtener Solo los Encabezados de un Post**</mark>

```bash
curl -I https://jsonplaceholder.typicode.com/posts/1
```

## <mark style="color:green;">Conclusión</mark>

Este cheatsheet de comandos `curl` proporciona una guía rápida para interactuar con APIs utilizando todos los métodos HTTP principales. Practicar con estos comandos te ayudará a comprender mejor cómo funcionan las solicitudes HTTP y cómo interactuar con diferentes tipos de APIs. La API de JSONPlaceholder es una excelente herramienta para aprender y practicar estos conceptos.
