빠른 시작
API는 공개되어 있으며 키가 필요 없습니다. 이 페이지의 예제는 모두 여기서 바로 실행됩니다.
1. 곡 하나 읽기
섹션 제목: “1. 곡 하나 읽기” GET
/api/v1/songs/{id} 아직 보내지 않음
server는 카탈로그를 고릅니다. jp 또는 기본값인 Global의 intl입니다. 텍스트 필드는 일본어, 영어, 번체 중국어, 간체 중국어, 한국어 순서의 배열입니다. 빈 문자열은 해당 언어 텍스트가 아직 없다는 뜻입니다.
2. 목록 읽기
섹션 제목: “2. 목록 읽기” GET
/api/v1/songs 아직 보내지 않음
목록은 items를 반환하고, 다음 페이지가 있으면 nextCursor도 반환합니다. 다음 요청의 cursor로 전달하세요.
const base = "https://haneoka.org/api/v1/songs?server=jp&limit=100";const songs = [];let cursor = null;
do { const url = cursor ? `${base}&cursor=${encodeURIComponent(cursor)}` : base; const response = await fetch(url); if (!response.ok) throw new Error(`HTTP ${response.status}`); const page = await response.json(); songs.push(...page.items); cursor = page.nextCursor;} while (cursor);
console.log(songs.length);3. 페이지에 표시하기
섹션 제목: “3. 페이지에 표시하기”이미지 필드는 haneoka.org의 경로입니다. 오리진을 붙이고 referrerpolicy="no-referrer"를 지정하세요. 다른 사이트를 리퍼러로 보내는 요청은 거부됩니다.
<img id="jacket" alt="" width="240" height="240" referrerpolicy="no-referrer"><h1 id="title"></h1><script type="module"> const origin = "https://haneoka.org"; const song = await (await fetch(`${origin}/api/v1/songs/100091?server=jp`)).json(); document.querySelector("#title").textContent = song.musicTitle[0]; document.querySelector("#jacket").src = origin + song.jacketUrl;</script>- 카탈로그 전체 검색
- 지역별 랭킹과 플레이어 읽기
- 오류 처리와 재시도
fetch대신 JavaScript 클라이언트 사용