DIYgod/RSSHub · error · Error

接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}

Error message

接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}

What it means

Thrown when the Nowcoder top-hot-pc API (type='2', site-wide hot posts) returns a response with a non-zero `code` field. The upstream `gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc` endpoint is contacted with a cache-busting timestamp and `size` parameter. This is an upstream API-level failure, not a client-side validation error.

Source

Thrown at lib/routes/nowcoder/hots.ts:59

            throw new Error(`接口错误,错误代码:${responseBody.code},错误原因:${responseBody.msg}`);
        }
        const data = responseBody.data.result;
        return {
            title: '牛客网-热议话题',
            link: 'https://mnowpick.nowcoder.com/m/discuss/hot',
            description: '牛客网-热议话题',
            item: data.map((item) => ({
                title: item.content,
                description: `<img src="${item.numberIcon}" alt="rank">`,
                link: `https://www.nowcoder.com/creation/subject/${item.uuid}`,
            })),
        };
    }
    if (type === '2') {
        link = `https://gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc?size=${size}&_=${Date.now()}&t=`;
        const responseBody = (await got.get(link)).data;
        if (responseBody.code !== 0) {
            throw new Error(`接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}`);
        }
        const data = responseBody.data.result;
        return {
            title: '牛客网-全站热贴',
            link: 'https://mnowpick.nowcoder.com/m/discuss/hot',
            description: '牛客网-全站热贴',
            item: data.map((item) => ({
                title: item.title,
                link: `https://www.nowcoder.com/feed/main/detail/${item.uuid}`,
            })),
        };
    }
    throw new Error('Invalid type parameter');
}

View on GitHub (pinned to bed535e087)

Solutions

  1. Retry after a few minutes to rule out transient upstream failures.
  2. Open `https://gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc?size=20&_=<timestamp>&t=` directly in a browser to inspect the live response.
  3. If the endpoint changed, update line 56 of `lib/routes/nowcoder/hots.ts` to the new API path.
  4. Add caching with `cache.tryGet` to reduce repeated upstream calls.

Example fix

// before
const responseBody = (await got.get(link)).data;
if (responseBody.code !== 0) {
    throw new Error(`接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}`);
}

// after — add retry + cache
const responseBody = await cache.tryGet(link, async () => (await got.get(link)).data);
if (responseBody.code !== 0) {
    throw new Error(`接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}`);
}
Defensive patterns

Strategy: retry

Try / catch

// Retry transient upstream failures with cache
try {
    const responseBody = await cache.tryGet(link, async () => (await got.get(link)).data);
    if (responseBody.code !== 0) {
        throw new Error(`接口错误,错误代码: ${responseBody.code},错误原因: ${responseBody.msg}`);
    }
} catch (e) {
    logger.error(`Nowcoder hot-search API failed: ${e}`);
    throw e;
}

Prevention

When it happens

Trigger: Calling the nowcoder hots route with type='2' when the upstream hot-search API returns an error code. The endpoint is `top-hot-pc?size=<size>&_=<timestamp>&t=` and any non-zero `code` triggers the throw.

Common situations: The Nowcoder hot-search API endpoint was deprecated or moved. The upstream server is temporarily returning errors (5xx mapped to business error codes). The site added anti-crawler protection that returns a structured error response instead of data.

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/3dade47f61ae5ca6. Report an issue: GitHub.