{"record":{"id":"3dade47f61ae5ca6","repo":"DIYgod/RSSHub","slug":"responsebody-code-responsebo","errorCode":null,"errorMessage":"接口错误，错误代码: ${responseBody.code}，错误原因: ${responseBody.msg}","messagePattern":"接口错误，错误代码: (.+?)，错误原因: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":503,"severity":"error","filePath":"lib/routes/nowcoder/hots.ts","lineNumber":59,"sourceCode":"            throw new Error(`接口错误，错误代码:${responseBody.code},错误原因:${responseBody.msg}`);\n        }\n        const data = responseBody.data.result;\n        return {\n            title: '牛客网-热议话题',\n            link: 'https://mnowpick.nowcoder.com/m/discuss/hot',\n            description: '牛客网-热议话题',\n            item: data.map((item) => ({\n                title: item.content,\n                description: `<img src=\"${item.numberIcon}\" alt=\"rank\">`,\n                link: `https://www.nowcoder.com/creation/subject/${item.uuid}`,\n            })),\n        };\n    }\n    if (type === '2') {\n        link = `https://gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc?size=${size}&_=${Date.now()}&t=`;\n        const responseBody = (await got.get(link)).data;\n        if (responseBody.code !== 0) {\n            throw new Error(`接口错误，错误代码: ${responseBody.code}，错误原因: ${responseBody.msg}`);\n        }\n        const data = responseBody.data.result;\n        return {\n            title: '牛客网-全站热贴',\n            link: 'https://mnowpick.nowcoder.com/m/discuss/hot',\n            description: '牛客网-全站热贴',\n            item: data.map((item) => ({\n                title: item.title,\n                link: `https://www.nowcoder.com/feed/main/detail/${item.uuid}`,\n            })),\n        };\n    }\n    throw new Error('Invalid type parameter');\n}\n","sourceCodeStart":41,"sourceCodeEnd":74,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/nowcoder/hots.ts#L41-L74","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nconst responseBody = (await got.get(link)).data;\nif (responseBody.code !== 0) {\n    throw new Error(`接口错误，错误代码: ${responseBody.code}，错误原因: ${responseBody.msg}`);\n}\n\n// after — add retry + cache\nconst responseBody = await cache.tryGet(link, async () => (await got.get(link)).data);\nif (responseBody.code !== 0) {\n    throw new Error(`接口错误，错误代码: ${responseBody.code}，错误原因: ${responseBody.msg}`);\n}","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Retry transient upstream failures with cache\ntry {\n    const responseBody = await cache.tryGet(link, async () => (await got.get(link)).data);\n    if (responseBody.code !== 0) {\n        throw new Error(`接口错误，错误代码: ${responseBody.code}，错误原因: ${responseBody.msg}`);\n    }\n} catch (e) {\n    logger.error(`Nowcoder hot-search API failed: ${e}`);\n    throw e;\n}","preventionTips":["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."],"tags":["api-error","nowcoder","upstream","chinese-site"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}