서비스와 연동하기

최종 수정: 2026년 6월 22일

앞 단계에서 게시글 데이터를 만들었습니다. 이제 이 데이터를 실제 사용자에게 보여 줄 차례입니다. WEEGLOO는 데이터를 저장하고 관리하는 역할을 맡으므로, 이를 어떤 서비스로 보여 줄지는 전적으로 만드는 사람의 선택입니다. 웹 애플리케이션으로 만들 수도, 모바일 앱으로 넓힐 수도, 둘을 함께 둘 수도 있습니다. 핵심은 WEEGLOO가 제공하는 RESTful API로 데이터를 가져와 원하는 형태로 쓸 수 있다는 점입니다.

이번 예제에서는 Tech Blog를 웹 사이트로 만듭니다. 방문자가 웹 브라우저로 게시글을 볼 수 있게 하고, 우리는 그 화면(Front-end)을 구성합니다. 이렇게 만든 정적 웹 파일은 WEEGLOO의 Web Hosting 기능으로 배포할 수 있습니다.

읽기 전용 토큰 발급하기

WEEGLOO API를 호출하려면 인증용 Access Token이 필요합니다. 이 예제에서는 방문자에게 게시글을 보여 주는 용도의 읽기 전용 토큰인 Delivery Access Token과, 발행된 콘텐츠를 전달하는 API인 CDA(Content Delivery API)를 씁니다.

토큰을 만들기 전에, 그 토큰이 어떤 데이터에 접근할 수 있는지를 SpaceRole로 먼저 정해야 합니다. 보안을 위해, 앞서 만든 Article Content Type에 대해서만 읽기 권한을 주는 SpaceRole을 만듭니다. 이렇게 하면 토큰이 게시글을 읽는 것 외에는 아무것도 하지 못합니다.

  1. 왼쪽 메뉴에서 Roles & Permissions를 누르세요.
  2. Create를 누르고 역할 이름을 입력하세요. 예: Article Read-Only.
  3. ArticleContentContent TypeRead만 허용하세요. 다른 권한은 켜지 않습니다.
  4. Save로 저장하세요.

Article에 읽기 권한만 준 SpaceRole 설정 화면

SpaceRole 설정에 대한 자세한 내용은 역할과 권한에서 다룹니다.

이제 이 SpaceRole을 가진 Delivery Access Token을 만듭니다.

  1. 왼쪽 메뉴에서 Delivery Access Tokens를 누르세요.
  2. Create를 누르고 토큰 이름을 입력하세요. 예: Tech Blog Web.
  3. Role에서 앞서 만든 Article Read-Only를 고르고 Save로 저장하세요.

발급된 토큰 값은 한 번만 안전하게 보관하세요. 이 값은 방문자의 브라우저까지 노출될 수 있으므로, 위처럼 읽기 전용 SpaceRole로 범위를 좁혀 두는 것이 중요합니다.

Article Read-Only 역할로 발급한 Delivery Access Token 화면. 토큰 값은 가려져 있습니다

게시글 데이터 가져오기

이제 실제로 게시글을 가져오는 API를 호출합니다. 인증은 Authorization 헤더에 Bearer 방식으로, 앞서 만든 Delivery Access Token 값을 넣습니다.

Authorization: Bearer <Delivery Access Token>
APIMethodPathParams
CDAGET/v1/spaces/{spaceId}/content-types/{contentTypeId}/contents?order=-sys.createdAt,sys.id

이 API는 특정 Space 안의 Article Content 목록을 가져옵니다. order 옵션으로 최신순 정렬을 걸었고, include 옵션을 쓰면 연결된 데이터까지 함께 가져올 수 있습니다.

처음 호출하면 아무 데이터도 나오지 않을 수 있습니다. 만든 Content가 아직 발행(Publish)되지 않았기 때문입니다. WEEGLOO는 작성 중인 데이터와 방문자에게 보여 줄 데이터를 구분하기 위해 발행이라는 단계를 둡니다. Content를 발행한 뒤 다시 호출하면 게시글이 조회됩니다.

{
    "sys": { "type": "TotalPageResponse" },
    "limit": 15,
    "totalCount": 1,
    "items": [
        {
            "sys": {
                "id": "3trmXRkRjC1x4J9h2om4Qh41o7sejd",
                "type": "Content",
                "space": { "sys": { "id": "ep8f7qJY", "type": "Refer", "targetType": "Space" } },
                "contentType": { "sys": { "id": "3trmXRkRjC1x4J9h2om4QZv0jC58Nv", "type": "Refer", "targetType": "ContentType" } },
                "createdAt": "2026-06-21T15:38:22.630Z",
                "updatedAt": "2026-06-21T15:38:22.630Z",
                "revision": 1
            },
            "fields": {
                "title": "Building a Headless Blog with WEEGLOO",
                "body": "WEEGLOO lets you define your content structure once and deliver it anywhere through a REST API. In this post we model an Article, write our first entry, and fetch it from a web app, with no backend server to build or maintain.",
                "category": "Web"
            }
        }
    ],
    "links": {
        "self": "/v1/spaces/ep8f7qJY/content-types/3trmXRkRjC1x4J9h2om4QZv0jC58Nv/contents?order=-sys.createdAt,sys.id"
    }
}

API의 자세한 사용법과 옵션은 API 레퍼런스에서 다룹니다.

다국어 지원

한 단계 더 나아가, 게시글을 여러 언어로 제공해 보겠습니다. WEEGLOO는 하나의 콘텐츠를 여러 언어로 관리하도록 Locale 기능을 제공합니다.

먼저 Locale 설정에서 새 언어를 추가합니다. 여기서는 Korean을 추가하고, 값이 없을 때 대신 보여 줄 Fallback 언어를 English로 정합니다. Fallback은 특정 언어에 값이 없을 때 대신 보여 줄 언어입니다.

그다음 앞서 만든 Content로 가면 각 Field마다 언어별 값을 입력하는 칸이 생긴 것을 볼 수 있습니다. 이렇게 같은 게시글의 내용을 언어별로 따로 관리합니다. 단, 이 기능을 쓰려면 Content Type에서 해당 Field의 다국어 옵션을 미리 켜 두어야 합니다.

게시글의 Field에 영어(en-US)와 한국어(ko-KR) 입력 칸이 함께 나타난 모습

다국어 지원에 대한 자세한 내용은 다국어 관리에서 다룹니다.

이렇게 하나의 데이터 구조로 여러 언어를 지원하는 웹 서비스를 만들 수 있습니다. 기본적인 콘텐츠 조회와 다국어 처리까지 마쳤으니, 다음 단계에서는 여러 사람이 함께 콘텐츠를 작성하고 관리하는 협업 기능을 살펴봅니다.

  • 협업하기: 여러 사람을 Space에 초대하고 역할을 나눠 함께 콘텐츠를 관리합니다.