Nhà phát triểnCONTENT API CÔNG KHAI

REST và JSON thuần. Đóng cho đến khi bạn mở.

Cấu hình API công khai theo từng site kiểm soát chính xác những gì được công khai và cho ai. Lấy nội dung đã xuất bản, sitemap và chuyển hướng với cùng một cấu trúc JSON nhất quán ở mọi nơi — không có schema GraphQL phải học, không có client sinh tự động phải đồng bộ. Mọi yêu cầu bên dưới đều là thật: một blog xây trên CMSHub, gọi chỉ bằng curl.

01 / LẤY NỘI DUNG ĐÃ XUẤT BẢN

Một yêu cầu GET, bản ghi đã xuất bản dạng JSON

Khi một site đã bật và cho phép một bộ sưu tập, các bản ghi đã xuất bản của nó chỉ cách một lệnh GET đơn giản — xác định hoàn toàn qua header Host, không cần API key cho dữ liệu công khai.

  • Chỉ bản ghi ĐÃ XUẤT BẢN mới được trả về — bản nháp và bản sửa đổi chưa xuất bản không bao giờ lọt qua đường dẫn công khai.
  • Mặc định từ chối: host không xác định, site bị tắt hay bộ sưu tập chưa được cho phép đều trả về 404 như nhau.
  • ?locale=xx trả về biến thể đã xuất bản của ngôn ngữ đó, nếu không có sẽ dùng ngôn ngữ mặc định của không gian làm việc.
GEThttps://the-signal.blog/api/posts
curl https://the-signal.blog/api/posts
RESPONSE
{
  "siteId": "the-signal-4f2a",
  "siteName": "The Signal",
  "baseUrl": "https://the-signal.blog",
  "collection": {
    "id": "3b0d6f2a-9c41-4e8a-8f2e-1d4c9a7b6e11",
    "slug": "posts",
    "name": "Posts"
  },
  "data": [
    {
      "id": "a91f2e3c-7d5b-4a10-9c3e-6f8a2b1d0e44",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "Shipping a public content API without a GraphQL schema",
        "slug": "shipping-a-public-content-api",
        "excerpt": "Plain REST beats a bespoke query language when a frontend just needs JSON.",
        "category": "Engineering",
        "author": "Dana Osei",
        "published_at": "2026-09-10"
      }
    },
    {
      "id": "d2c5b8a1-4e3f-4c9d-8b7a-2f1e6d5c4b33",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "What the quality gate actually checks before you publish",
        "slug": "the-quality-gate-explained",
        "excerpt": "Every generated page passes the same checks, whether it's post 1 or post 10,000.",
        "category": "Product",
        "author": "Dana Osei",
        "published_at": "2026-09-04"
      }
    }
  ],
  "meta": {
    "locale": "en",
    "pagination": { "start": 0, "limit": 20, "total": 2, "nextCursor": null }
  }
}
02 / KHẢ NĂNG KHÁM PHÁ, TỰ ĐỘNG

Sitemap luôn khớp với những gì thực sự đã xuất bản

sitemap.xml và robots.txt được tạo từ cùng danh mục trang mà content API đọc — không có cấu hình riêng phải đồng bộ, không có gì phải tạo lại bằng tay.

  • Phản ánh danh mục trang trực tiếp ở mỗi yêu cầu — xuất bản một trang là nó có ngay trong sitemap.
  • Thẻ hreflang thay thế được tự động thêm cho mọi trang có bản dịch.
  • /robots.txt trỏ trình thu thập dữ liệu đến chính sitemap này, theo từng site.
GEThttps://the-signal.blog/sitemap.xml
curl https://the-signal.blog/sitemap.xml
RESPONSE
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url><loc>https://the-signal.blog/posts/shipping-a-public-content-api</loc><lastmod>2026-09-10T14:22:00.000Z</lastmod></url>
  <url><loc>https://the-signal.blog/posts/the-quality-gate-explained</loc><lastmod>2026-09-04T09:15:00.000Z</lastmod></url>
</urlset>
03 / MẶC ĐỊNH ĐÓNG

Bạn quyết định site công khai những gì

API nội dung công khai luôn đóng cho đến khi bạn cấu hình rõ ràng những gì một site được công khai — không có endpoint mở sẵn nào lặng lẽ phục vụ nội dung chưa xuất bản hay bản nháp.

Cấu hình theo từng site

Bật và cấu hình API công khai độc lập cho từng site trong một không gian làm việc.

Chỉ nội dung đã xuất bản

API công khai chỉ phục vụ những gì đã qua cổng chất lượng và thực sự được xuất bản — không bao giờ là bản nháp.

Có phiên bản, ổn định

Mọi route đều nằm dưới đường dẫn có phiên bản, nên tích hợp bạn xây hôm nay vẫn chạy khi CMSHub phát triển.

GỌI MỘT ENDPOINT THẬT

Bật API công khai cho một site.

Bật content API công khai cho một site của bạn và lấy một trang được tạo.