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
- Retry after a few minutes to rule out transient upstream failures.
- 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.
- If the endpoint changed, update line 56 of `lib/routes/nowcoder/hots.ts` to the new API path.
- 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
- Cache the hot-search API response to minimize upstream load.
- Verify the endpoint URL periodically against the live website.
- Log the upstream code/msg for diagnosis.
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
- 接口错误,错误代码:${responseBody.code},错误原因:${responseBody.msg}
- 接口错误,错误代码:${responseBody.code},错误原因:${responseBody.msg}
- 接口错误,错误代码:${responseBody.code},错误原因:${responseBody.msg}
- 接口错误,错误代码:${responseBody.code},错误原因:${responseBody.msg}
- Invalid type parameter
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/3dade47f61ae5ca6.
Report an issue: GitHub.