# Obtener publicaciones - [obtainPosts2]

## 🧾 **Descripción**

*Obtiene publicaciones (posts) asociadas a un usuario y una categoría determinada.*  
*La lógica de filtrado, cacheo o búsqueda se realiza internamente mediante el método:*

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%24this-%3Epostscache%28%24u"><div class="overflow-y-auto p-4" dir="ltr">*`<span class="hljs-variable"><span style="color: rgb(224, 62, 45);"><strong>$this</strong></span></span><span style="color: rgb(224, 62, 45);"><strong>->postsCache(<span class="hljs-variable">$user</span>, <span class="hljs-variable">$category</span>)</strong></span>`*</div></div>*Este servicio únicamente recibe los parámetros, solicita la data a <span style="color: rgb(224, 62, 45);">**`postsCache()`**</span> y devuelve la respuesta.*

---

# 🚀 **Endpoint**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-%2Fobtain-posts"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"><span style="color: rgb(224, 62, 45);">**`POST /obtain-posts`**</span></div></div>> El nombre final dependerá de tu archivo `routes/api.php`.

---

# 🔐 **Seguridad**

No realiza autenticación explícita.  
Si requieres seguridad, debe implementarse a nivel de ruta (middleware).

---

# 📥 **Request Body**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--3"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22cookie%22%3A-%22string-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"cookie"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string (opcional)"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"user"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"category"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

### Campos

<div class="_tableContainer_1rjym_1" id="bkmrk-campo-tipo-requerido"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1264" data-start="888"><thead data-end="936" data-start="888"><tr data-end="936" data-start="888"><th data-col-size="sm" data-end="900" data-start="888">Campo</th><th data-col-size="sm" data-end="909" data-start="900">Tipo</th><th data-col-size="sm" data-end="921" data-start="909">Requerido</th><th data-col-size="md" data-end="936" data-start="921">Descripción</th></tr></thead><tbody data-end="1264" data-start="986"><tr data-end="1094" data-start="986"><td data-col-size="sm" data-end="998" data-start="986">cookie</td><td data-col-size="sm" data-end="1007" data-start="998">string</td><td data-col-size="sm" data-end="1019" data-start="1007">No</td><td data-col-size="md" data-end="1094" data-start="1019">Cookie del usuario. En este servicio **no se usa**, pero está recibido.</td></tr><tr data-end="1186" data-start="1095"><td data-col-size="sm" data-end="1107" data-start="1095">user</td><td data-col-size="sm" data-end="1116" data-start="1107">string</td><td data-col-size="sm" data-end="1128" data-start="1116">Sí</td><td data-col-size="md" data-end="1186" data-start="1128">ID o email del usuario para obtener las publicaciones.</td></tr><tr data-end="1264" data-start="1187"><td data-col-size="sm" data-end="1199" data-start="1187">category</td><td data-col-size="sm" data-end="1208" data-start="1199">string</td><td data-col-size="sm" data-end="1220" data-start="1208">Sí</td><td data-col-size="md" data-end="1264" data-start="1220">Categoría de las publicaciones a listar.</td></tr></tbody></table>

</div></div>---

# 📤 **Respuesta (200 OK)**

### Ejemplo de respuesta:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--5"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22data%22%3A-%5B-%2F%2F-conte" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>    <span class="hljs-comment">// contenido devuelto por postsCache()</span>  <span class="hljs-punctuation">]</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

La estructura interna depende íntegramente de lo que retorne <span style="color: rgb(224, 62, 45);">**`postsCache()`**</span>.

---

# 🧩 **Lógica Interna (resumen)**

1. Recibe <span style="color: rgb(224, 62, 45);">**`cookie`**</span>, <span style="color: rgb(224, 62, 45);">**`user`**</span>, y <span style="color: rgb(224, 62, 45);">**`category`**</span>.
2. Llama a: `<span style="color: rgb(224, 62, 45);"><strong>postsCache(<span class="hljs-variable">$user</span>, <span class="hljs-variable">$category</span>)</strong></span>`
3. Devuelve un JSON simple:
    
    <div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8711%;"></col></colgroup><tbody><tr><td>`{ <span class="hljs-string">"data"</span>: <resultado> }`</td></tr></tbody></table>
    
    </div></div></div></div>

---

# 📚 **Schema de Respuesta**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22data%22%3A-%22array-%7C-o" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"array | object según postsCache()"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

---

# 🧪 **Ejemplo en curl**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-curl--x-post-https%3A%2F"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`curl -X POST https://midominio.com/api/obtain-posts \-H <span class="hljs-string">"Content-Type: application/json"</span> \-d <span class="hljs-string">'{"user":"user@example.com","category":"capacitacion"}'</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>