profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

Quick startSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST API

REST API OverviewgetConnect your websitegetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

Connect your website

Anslut en webbplats till CMS-API:t

CMS-API:t gör att din webbplats kan hÀmta och rendera publicerat innehÄll frÄn Profound CMS. Du kan anvÀnda det för att driva dokumentationssidor, marknadssidor, bloggar, hjÀlpcenter eller andra innehÄllsdrivna upplevelser.

Den typiska integrationen bestÄr av tre delar:

  1. Konfigurera din CMS-anslutning
  2. HÀmta publicerat innehÄll
  3. Rendera innehÄllet i din applikation

Konfiguration

För att ansluta din applikation till CMS:et anger du din CMS API-URL, webbplats-ID och API-nyckel.

const cmsConfig = {
  cmsUrl: 'https://cms.dev.tryprofoun.com',
  websiteId: 'your-website-id',
  apiKey: process.env.PROFOUND_API_KEY,
};

AnvÀnd miljövariabler för vÀrden som skiljer sig mellan miljöer:

NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key

Exponera inte privata API-nycklar i klientkod. API-nycklar ska anvÀndas pÄ din server, i din byggprocess eller i dina backend-rutter.

HÀmta innehÄll

InnehÄllet i CMS:et Àr organiserat efter scheman. Till exempel kan ditt projekt ha scheman som post, category, page eller section.

AnvÀnd schemats namn för att hÀmta innehÄll:

const posts = await cms.schema('post').fetchAll();

För att hÀmta ett enskilt dokument via ID:

const post = await cms.schema('post').fetchSingleById('document-id');

För att hÀmta lokalt anpassat innehÄll begÀr du den översatta versionen av schemat:

const frenchPost = await cms
  .schema('post')
  .translation('fr')
  .fetchSingleById('document-id');

Rendera rutter

För webbplatser som anvÀnder CMS-hanterade sidor kan du hÀmta innehÄll baserat pÄ den aktuella URL-sökvÀgen.

const route = await cms.route.getByPath({
  websiteId: 'your-website-id',
  path: '/docs/getting-started',
});

Svaret frÄn rutten identifierar sidan och blocken som ska renderas. Din applikation kan sedan hÀmta blocken och rendera dem med dina egna komponenter.

const blocks = await cms.block.getByIds({
  websiteId: 'your-website-id',
  ids: route.blockIds,
});

Exempel: Rendera en dokumentationssida

async function getDocsPage(path: string) {
  const route = await cms.route.getByPath({
    websiteId: process.env.WEBSITE_ID,
    path,
  });

  const blocks = await cms.block.getByIds({
    websiteId: process.env.WEBSITE_ID,
    ids: route.blockIds,
  });

  return {
    title: route.label,
    path: route.path,
    blocks,
  };
}

Du kan anvÀnda de returnerade blocken för att rendera sidan med din applikations komponentsystem.

Cachelagring

Publicerat CMS-innehÄll Àr sÀkert att cachelagra. För de flesta webbplatser bör du cachelagra API-svar under en kort period och revalidera dem nÀr innehÄllet Àndras.

En vanlig uppsÀttning Àr:

const content = await cache(
  () => cms.schema('post').fetchAll(),
  {
    revalidate: 60,
    tags: ['cms-posts'],
  }
);

Rekommenderat cachebeteende:

  • Cachelagra publicerade lĂ€sningar.
  • AnvĂ€nd kortare cachefönster för innehĂ„ll som uppdateras ofta.
  • AnvĂ€nd cache-taggar om ditt ramverk stöder ogiltigförklaring pĂ„ begĂ€ran.
  • Undvik att cachelagra förhandsgranskat eller utkastinnehĂ„ll.

FörhandsgranskningslÀge

FörhandsgranskningslÀget lÄter redaktörer se opublicerade Àndringar innan de publiceras.

Ett vanligt mönster Àr att anvÀnda en separat förhandsgranskningsrutt, till exempel:

/docs/getting-started
/cms-preview/docs/getting-started

Produktionssidor bör endast hÀmta publicerat innehÄll. Förhandsgranskningssidor kan ta emot parametrar för förhandsgranskning, till exempel:

?edit_mode=true

Förhandsgranskningsrutter bör vanligtvis vara dynamiska och bör inte cachelagras statiskt.

Felhantering

CMS-innehÄll kan vara otillgÀngligt under en byggprocess eller begÀran. Din applikation bör hantera detta pÄ ett smidigt sÀtt.

Rekommenderat beteende:

  • Returnera 404 nĂ€r en rutt inte finns.
  • Returnera en tom lista nĂ€r valfritt navigationsinnehĂ„ll inte kan laddas.
  • Logga hĂ€mtfel pĂ„ serversidan.
  • Undvik att exponera interna API-fel för besökare.

Exempel:

async function getPost(id: string) {
  try {
    return await cms.schema('post').fetchSingleById(id);
  } catch (error) {
    console.error('Failed to fetch CMS post', error);
    return null;
  }
}

SĂ€kerhet

HÄll API-nycklar privata och anvÀnd dem endast pÄ servern. Inkludera inte privata autentiseringsuppgifter i webblÀsarpaket eller offentlig JavaScript.

AnvÀnd offentliga miljövariabler endast för icke-kÀnsliga vÀrden sÄsom:

  • CMS offentlig URL
  • Webbplats-ID
  • Lokaliseringskonfiguration

AnvÀnd privata miljövariabler för:

  • API-nycklar
  • förhandsgranskningstoken
  • adminuppgifter
  • distributionshemligheter

Sammanfattning

AnvÀnd CMS-API:t nÀr din webbplats behöver hÀmta strukturerat innehÄll, rendera CMS-hanterade rutter eller stödja redaktörers förhandsgranskningsarbetsflöden.

En standardintegration bör:

  • Konfigurera CMS-URL, webbplats-ID och API-nyckel.
  • HĂ€mta dokument efter schema.
  • HĂ€mta sidor via ruttsökvĂ€g.
  • Rendera CMS-block med dina egna komponenter.
  • Cachelagra publicerat innehĂ„ll.
  • BehĂ„ll förhandsgranskningsinnehĂ„llet dynamiskt.
  • BehĂ„ll privata autentiseringsuppgifter pĂ„ servern.
Continue Reading
Previousâ€čREST API OverviewNextGET /routesâ€ș