Skip to content

SDK 错误处理

失败响应统一是:

json
{
  "error": "错误原因"
}

当前版本没有独立的业务错误码字段。错误处理以 HTTP 状态码为准。

状态码

状态码含义处理方式
200请求成功正常读取返回体。
202任务已创建保存 task_id,再查询任务状态或日志。
400请求参数错误检查 JSON、字段名、问卷链接、二维码文件。
404任务不存在检查任务 ID,或重新读取任务列表。
502上游问卷平台解析失败检查问卷是否开放、链接是否可访问,稍后重试。
500服务内部错误查看服务日志。

POST JSON 接口会拒绝未知字段。字段名写错会得到 400

接口错误速查

接口可能状态码常见原因
GET /api/health200服务正常。
GET /api/version200服务正常。
POST /api/surveys/parse400JSON 无效、字段名错误、url 为空。
POST /api/surveys/parse502问卷平台访问失败、链接不支持、问卷关闭、需要登录。
POST /api/configs400JSON 无效、字段名错误。
POST /api/configs502传入 url 后解析问卷失败。
POST /api/tasks400JSON 无效、字段名错误、任务保存失败。
GET /api/tasks200成功返回任务列表。
GET /api/tasks/{id}404任务 ID 不存在。
POST /api/tasks/{id}/stop404任务 ID 不存在。
GET /api/tasks/{id}/logs400afterlimit 参数不合法。
GET /api/tasks/{id}/logs404任务 ID 不存在。
POST /api/qrcode/decode400表单无效、缺少 image 文件、二维码无法解析出问卷链接。
POST /api/qrcode/decode500临时文件、文件读取或服务内部处理失败。

错误返回示例

400

优先检查这些问题:

  • JSON 是否合法。
  • Content-Type 是否正确。
  • 字段名是否写错。
  • 是否传了服务不认识的字段。
  • url 是否为空。
  • 日志 after 是否为非负整数。
  • 日志 limit 是否在 11000 之间。
  • 二维码上传字段名是否为 image

示例:

json
{
  "error": "JSON 请求体无效: json: unknown field \"taskTarget\""
}

URL 为空:

json
{
  "error": "url 不能为空"
}

日志游标错误:

json
{
  "error": "日志游标必须是非负整数"
}

日志条数错误:

json
{
  "error": "日志条数必须是 1 到 1000 之间的整数"
}

二维码文件缺失:

json
{
  "error": "缺少 image 文件"
}

404

只会出现在任务相关接口。

先调用 GET /api/tasks 确认任务是否存在。

示例:

json
{
  "error": "任务不存在"
}

502

通常是问卷平台访问失败、问卷关闭、问卷需要登录、链接不支持、网络异常。

调用方可以提示用户检查问卷链接,再做有限次数重试。

示例:

json
{
  "error": "无法获取题目: 问卷已停止,无法作答"
}

500

通常是服务内部文件、临时文件、数据库或二维码处理异常。

调用方应提示用户查看 SurveyCore 服务日志。

接入方建议

SDK 封装时建议只暴露三类结果:

类型判断方式给用户的提示
成功status200202正常返回数据。
用户可修复错误400404提示检查参数、字段名、任务 ID、二维码文件。
外部或服务错误502500提示稍后重试,必要时查看 SurveyCore 服务日志。

创建任务接口的 202 不是任务成功。它只表示任务已经创建。

后续要用 GET /api/tasks/{id}status,或者用 GET /api/tasks/{id}/logs 读取详细日志。