getContent
La función getContent obtiene un solo contenido de un proyecto.
Esta función es útil para obtener un contenido específico, como un artículo o una entrada de blog.
Ejemplo:
// Usando el cliente que ya hemos creado previamenteconst content = await client.getContent({ id: '1' });console.log(content);Interfaz
La función getContent acepta como parámetros un objeto ContentQueryParams requerido y devuelve una promesa que se resuelve con el contenido.
export interface ApiClient { getContent: <Model>(queryParam: ContentQueryParams<Model>) => Promise<Model>; // ... otros métodos}Parámetros
queryParam: Un objeto que contiene los parámetros de consulta para filtrar el contenido. Este parámetro es requerido para poder recuperar el contenido filtrado porido cualquier otro filtro que quieras aplicar.
interface ContentQueryParams { id?: ClientFilter<string>; contentType?: ClientFilter<string>; language?: string; `fields.${string}`?: ClientFilter; // Permite filtrar por valores específicos de campos // Por ejemplo: 'fields.slug': 'my-post' includeRelatedContent?: boolean | number | 'all'; // Cuántos niveles de contenido relacionado expandir. `false` / `0` -> nada; `true` / `1` -> 1 nivel (legacy); `2..15` -> N niveles; `'all'` -> tope (15).}| nombre | descripción |
|---|---|
id | El campo id del contenido a recuperar.Este parámetro debe ser un stringEjemplo: client.getContent({ id: '1' })Puedes encontrar el id del contenido en la pestaña Contenido de tu proyecto. |
contentType | El modelo del contenido que queremos recuperar. Por ejemplo: client.getContent({ id: '1', contentType: 'post' }) |
language | El idioma del contenido que queremos recuperar. Cuando aplicamos este filtro, solamente devolverá los campos del modelo en el idioma seleccionado y descartará los demás. Por ejemplo: client.getContent({ id: '1', language: 'es' }) |
fields.${string} | Permite filtrar por valores específicos de campos. Ejemplos: client.getContent({ 'fields.slug': 'my-post' } })client.getContent({ 'fields.title': { in: ['Hello World', 'Hola Mundo'] } })Recupera contenido con campos que coincidan con los valores especificados. |
includeRelatedContent | Controla cuántos niveles de contenido relacionado expande el servidor en una sola respuesta. Acepta false, true (1 nivel, legacy), 0..15 o 'all' (alias del tope de profundidad, 15). El servidor aplica un tope de profundidad de 15 y un presupuesto de 500 contenidos resueltos por petición; cuando se trunca, la respuesta incluye X-Related-Content-Partial: true y siempre expone X-Related-Content-Resolved-Depth.Ejemplos: client.getContent({ includeRelatedContent: true }) — 1 nivel (legacy).client.getContent({ includeRelatedContent: 3 }) — 3 niveles.client.getContent({ includeRelatedContent: 'all' }) — hasta 15 niveles. |
type ClientFilter<Type = string | boolean | number> = | Type | { in?: Type[]; ne?: Type; nin?: Type[]; };| nombre | descripción |
|---|---|
string | Filtra el contentido donde el parámetro es igual a este valor.Por ejemplo: client.getContent({id: '1', contentType: 'post' })Recupera un contentido cuyo modelo es igual a post |
in | Filtra el contenido donde el parámetro contiene alguno de estos valores.Por ejemplo: client.getContent({id: '1', language: { in: ['post', 'minibio'] }})Recupera un contenido filtrando los campos que coincidan con post y/o minibio |
ne | Filtra el contenido donde el parámetro no es igual a este valor.Por ejemplo: client.getContent({id: '1', contentType: { ne: 'page' } })Recupera un contentido cuyo modelo no es igual a page |
nin | Filtra el contenido donde el parámetro no contiene ninguno de estos valores.Por ejemplo: client.getContent({id: '1', contentType: { nin: ['page', 'post'] } })Recupera un contentido cuyo modelo no sea ni page ni post |
Salida
La función getContent devuelve un objeto que contiene el contenido (filtrado o no). Este objeto representa los valores del contenido que los usuarios definen en su proyecto en Content Island.
Ejemplo:
import { createClient } from '@content-island/api-client';
// ... código de inicialización del cliente
// Tu modelo Post definido en Content Islandinterface Post { id: string; // Id del contenido title: string; // Campo definido en el modelo body: string; // Campo definido en el modelo order: number; // Campo definido en el modelo language: 'es' | 'en'; // o cualquier otro idioma que tengas definido en tu proyecto}
const post = await client.getContent({ id: '1' });console.log(post);/* { id: '1', title: 'Hola Mundo', body: 'Este es el cuerpo del post en markdown.', order: 1, language: 'es', }*/Puedes ver que el contenido ya está mapeado a su modelo correspondiente y puedes acceder a los campos directamente sin tener que hacer un mapeo manual.
getContent utiliza la función mapContentToModel por debajo para mapear el contenido a su modelo, visita esa sección para más información sobre cómo funciona el mapeo de contenido.