# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://books.spartan-cybersec.com/cppj/appweb-for-juniors/fundamentos-de-apis/practica-gratis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
