홈페이지에 콘텐츠 연동하기
공개한 콘텐츠를 홈페이지에 불러오는 주소, 인증 방법, 요청 예시를 확인하고 복사합니다.
외부 공개한 컬렉션의 콘텐츠는 주소로 불러올 수 있습니다. 홈페이지를 만드는 담당자가 이 주소로 공지사항이나 자주 묻는 질문을 가져오면, 화면에서 콘텐츠를 고칠 때마다 홈페이지 내용도 함께 갱신됩니다. 이 글은 연동에 필요한 정보를 찾고 전달하는 방법을 안내합니다.
시작하기 전에
- 컬렉션의 외부 공개가 활성화되어 있어야 합니다. 비공개 컬렉션은 연동 주소로 조회되지 않습니다. 설정은 콘텐츠 컬렉션 만들기를 참고합니다.
- 공개 상태인 콘텐츠만 제공됩니다. 임시 저장 콘텐츠와 예약 시각이 지나지 않은 콘텐츠는 제외됩니다.
- 공개 키로 요청하려면 요청의 Origin 또는 Referer 헤더가 사이트에 등록된 도메인과 같아야 합니다. 브라우저는 이 헤더를 자동으로 보냅니다. 도메인은 사이트 설정에서 확인합니다.
- 홈페이지 코드는 개발자가 작성합니다. 개발자에게 이 글의 주소와 인증 방법을 전달합니다.
순서
- 사이트 > 사이트 관리 > 콘텐츠 > 외부 연동을 선택합니다. 컬렉션 목록 오른쪽 위 외부 연동 버튼으로도 열 수 있습니다.
- 공개한 콘텐츠 영역에서 컬렉션별 가져올 주소를 확인합니다. 주소 복사를 선택하면 복사됩니다. 안내 문구대로 이 주소를 홈페이지 제작 담당자에게 전달합니다.
- 개발자에게 필요한 정보는 개발자용 상세를 펼쳐 확인합니다. 인증, 엔드포인트, 요청 예시가 있습니다.
- 인증에 사용하는 사이트 키는 사이트 > 설정 > 사이트 설정의 사이트 키 영역에서 복사합니다. 연동에는 공개 키를 사용합니다.
- 요청 예시를 복사해 홈페이지 코드에서 사용합니다.
주소와 인증
| 항목 | 내용 |
|---|---|
| 콘텐츠 목록 | GET https://did.kr/api/v1/cms/{컬렉션}/entries |
| 콘텐츠 1건 | GET https://did.kr/api/v1/cms/{컬렉션}/entries/{id} |
| 필드 정보 | GET https://did.kr/api/v1/cms/{컬렉션} |
| 인증 | 요청 헤더에 Authorization: Bearer <공개 키> |
{컬렉션}에는 컬렉션의 영문 이름(예: notice)을 입력합니다. 서버나 터미널에서 공개 키로 시험할 때는 -H "Origin: https://등록한도메인"을 함께 보냅니다. 서버에서만 호출한다면 비공개 키로도 조회할 수 있습니다. {id}에는 목록 응답에 있는 콘텐츠의 ulid를 입력합니다. 외부 연동 화면의 주소는 화면에 표시된 도메인을 그대로 사용합니다.
요청 예시
curl -H "Authorization: Bearer <공개 키>" \
"https://did.kr/api/v1/cms/{컬렉션}/entries"
응답에 담기는 정보
- 목록 응답:
collection(영문 이름, 이름, 유형),entries(콘텐츠 배열),meta(page,per_page,total,last_page) - 콘텐츠 한 건:
ulid,title,is_pinned,published_at,fields(필드의 영문 이름별 값) - 쪽수는
page, 한 번에 가져올 개수는per_page로 정합니다.per_page는 1에서 100까지이며 기본값은 20입니다. - 상단 고정한 콘텐츠가 맨 앞에 오고, 나머지는 컬렉션의 기본 정렬을 따릅니다.
- 단일형 컬렉션의 값은 응답
entries의 첫 번째 항목에 있습니다.
이후에는
- 공개 상태의 콘텐츠를 등록하거나 수정하면 연동 주소의 응답이 1분 안에 갱신됩니다. 응답은 1분간 캐시됩니다.
- 컬렉션의 외부 공개를 해제하면 해당 주소는 「컬렉션을 찾을 수 없습니다.」(404)로 응답합니다.
- 필드를 삭제하면 해당 필드는 응답에서 빠집니다.
안 될 때
| 증상 | 원인 | 해결 |
|---|---|---|
| 401 오류가 납니다 | 인증 헤더가 없거나 키가 맞지 않습니다 | Authorization: Bearer <공개 키> 헤더를 확인합니다. 사이트 설정의 사이트 키에서 공개 키를 다시 복사합니다. |
| 403 오류가 납니다 | 공개 키 요청의 Origin 또는 Referer가 사이트에 등록된 도메인과 다릅니다. 서버나 터미널 요청에는 이 헤더가 없습니다 | 사이트 설정에 도메인이 등록되어 있는지 확인합니다. 시험 요청에는 Origin 헤더를 추가합니다. |
| 404 「컬렉션을 찾을 수 없습니다.」가 납니다 | 외부 공개가 비활성화되어 있거나 영문 이름이 맞지 않습니다 | 컬렉션 목록에서 「공개」 표시와 영문 이름을 확인합니다. |
| 404 「콘텐츠를 찾을 수 없습니다.」가 납니다 | 콘텐츠가 공개 상태가 아니거나 id가 맞지 않습니다 | 콘텐츠가 공개 상태인지 확인하고 목록 응답의 ulid를 사용합니다. |
| 응답이 비어 있습니다 | 공개 상태의 콘텐츠가 없습니다 | 콘텐츠를 공개 상태로 등록합니다. 예약 공개는 지정한 시각 뒤에 나타납니다. |
| 콘텐츠를 고쳤는데 홈페이지가 그대로입니다 | 응답이 1분간 캐시됩니다 | 1분 뒤 다시 확인합니다. |
| 사이트 키가 노출됐습니다 | 키가 공개 저장소나 공유 문서에 포함됐습니다 | 연동에는 공개 키만 사용합니다. 비공개 키가 노출됐다면 고객 지원에 알려 주세요. |
