임동욱 임동욱 08-20
fix: 금융쇼츠 목록이 빈 응답 본문에서 JSON 파싱 오류로 끊기던 문제
`video/pagination` 컨트롤러가 `ApiResponseVO`가 아니라 `null`을 돌려준다. 그러면 Spring이
봉투를 쓰지 않고 **본문이 통째로 빈** 200을 내려보내는데, `backendFetch`가 곧바로
`response.json()`을 불러 "Unexpected end of JSON input"으로 끊겼다.

`data: null`은 이미 허용해 두었지만 그것은 봉투 안의 data가 null인 경우고, 이번 건은 봉투
자체가 없는 경우라 걸리지 않았다. 목록 조회에 `canHaveEmptyBody`를 켜서 본문을 먼저 글자로
읽고 비어 있으면 빈 목록으로 다룬다.

백엔드가 서비스를 붙이면 이 분기는 자연히 지나가지 않는다.

Co-Authored-By: Claude Opus 5 
@e6f73572ef7048cbac49f796a19bc56807cfafd7
lib/data/repositories/content-repository.ts
--- lib/data/repositories/content-repository.ts
+++ lib/data/repositories/content-repository.ts
@@ -19,8 +19,9 @@
  * ```
  *
  * 이슈: 경로가 `cntnts`가 아니라 **`cntntns`**다(백엔드 오타). 고쳐지면 아래 상수만 바꾼다.
- * 이슈: `video/pagination` 컨트롤러가 `return null;`이라 금융쇼츠 목록은 늘 비어 온다.
- *   서비스가 주입돼 있지 않아 프론트에서 우회할 방법이 없다.
+ * 이슈: `video/pagination` 컨트롤러가 `return null;`이라 응답 봉투 없이 **본문이 통째로 빈**
+ *   200이 온다(서비스가 주입돼 있지 않다). 그래서 목록 조회는 `canHaveEmptyBody`가 필요하고,
+ *   금융쇼츠 목록은 늘 빈 목록으로 보인다.
  * 이슈: 등록·수정·삭제·단건조회 API가 없다. 아래 쓰기 함수는 다른 관리 화면과 같은 규약
  *   (`POST {base}` / `PUT {base}/{sn}` / `DELETE {base}/{sn}`)으로 미리 맞춰 둔 것이라
  *   백엔드가 생기기 전에는 실패한다.
@@ -137,6 +138,7 @@
     accessToken: accessToken ?? undefined,
     cache: 'no-store',
     canHaveNullData: true,
+    canHaveEmptyBody: true,
   });
 
   if (!result.ok) {
Add a comment
List