2. API 基础概念:RESTful API、HTTP 方法与状态码

在信用评分系统的在线推理链路中,API(应用程序编程接口)是服务端与客户端之间的通信契约。现代微服务架构普遍采用 RESTful API 风格来设计评分接口,其核心要素包括资源标识、HTTP 方法、请求/响应格式以及状态码。

2.1 什么是 RESTful API

REST(Representational State Transfer,表述性状态转移)是一种基于 HTTP 协议的架构风格,强调将业务实体抽象为“资源”,并通过统一的接口对资源进行操作。信用评分 API 中的典型资源包括:

  • 评分请求(ScoreRequest):包含客户特征数据的输入对象。
  • 评分结果(ScoreResult):包含信用分数、决策建议的输出对象。
  • 模型版本(ModelVersion):当前生效的评分模型元数据。
设计原则:RESTful API 要求每个资源拥有唯一的 URI(统一资源标识符),例如 /api/v1/score 表示评分资源,/api/v1/models 表示模型版本集合。
RESTful API 核心概念关系图 RESTful API 核心概念关系 客户端 (App / 浏览器) HTTP 请求 RESTful 服务端 (评分引擎) HTTP 响应 资源(Resource) 评分请求 评分结果 模型版本 📌 无状态:每次请求包含 完整上下文,服务端不保存 客户端会话状态。

2.2 HTTP 方法(GET / POST / PUT / DELETE)

RESTful API 通过 HTTP 方法(也称为“动词”)来定义对资源的操作类型。信用评分 API 中最常用的方法是 POST,因为评分请求通常包含敏感特征数据,且需要保证请求体的完整性。

HTTP 方法 操作语义 幂等性 信用评分场景示例
GET 获取资源 是 查询模型版本信息:GET /api/v1/models/current
POST 创建资源 / 提交处理 否 提交评分请求:POST /api/v1/score
PUT 全量更新资源 是 更新评分策略配置:PUT /api/v1/strategies/123
DELETE 删除资源 是 删除测试评分记录:DELETE /api/v1/scores/test-001
幂等性说明:幂等(Idempotent)指无论执行一次还是多次,资源最终状态相同。POST 通常不幂等——重复提交评分请求可能产生多条评分记录;而 GET、PUT、DELETE 在正确实现下是幂等的。

2.3 HTTP 状态码含义

状态码是服务端对请求处理结果的标准化反馈。信用评分 API 中,状态码直接反映评分链路是否正常、数据是否有效、服务是否可用。状态码按类别分为 5 类:

  • 1xx(信息性):协议升级或临时响应,评分 API 中极少使用。
  • 2xx(成功):请求已成功处理。
  • 3xx(重定向):资源位置变更,评分 API 中通常不涉及。
  • 4xx(客户端错误):请求格式错误、参数缺失、认证失败等。
  • 5xx(服务端错误):评分引擎内部异常、模型加载失败、数据库超时等。
HTTP 状态码分类与信用评分场景映射 HTTP 状态码分类与信用评分场景映射 2xx 成功 200 OK:评分成功返回 201 Created:评分记录创建 204 No Content:删除成功 4xx 客户端错误 400 Bad Request:参数格式错误 401 Unauthorized:认证失败 403 Forbidden:无权限 404 Not Found:资源不存在 429 Too Many Requests:限流 5xx 服务端错误 500 Internal Server Error: 评分引擎异常 503 Service Unavailable: 模型加载中或过载 🔔 信用评分 API 最佳实践: • 评分请求统一使用 POST + 200/400/500 状态码 • 限流场景返回 429,并在响应头中携带 Retry-After

2.4 信用评分 API 的典型请求与响应

以下是一个使用 POST 方法提交信用评分请求的完整示例,包含请求头和请求体(JSON 格式):

POST /api/v1/score HTTP/1.1
Host: credit-scoring.example.com
Content-Type: application/json
Authorization: Bearer <access_token>
X-Request-ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890

{
  "customer_id": "CUST-2024-001",
  "features": {
    "age": 35,
    "income": 85000,
    "credit_history_length_months": 72,
    "existing_loans": 2,
    "payment_defaults_12m": 0,
    "debt_to_income_ratio": 0.28
  },
  "model_version": "v2.1.0"
}

服务端处理成功后,返回 200 OK 状态码及评分结果:

HTTP/1.1 200 OK
Content-Type: application/json
X-Request-ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890

{
  "score": 725,
  "rating": "A",
  "decision": "APPROVE",
  "probability_default": 0.032,
  "model_version": "v2.1.0",
  "processing_time_ms": 45
}
常见错误:部分开发者误将评分 API 设计为 GET 方法,将客户特征数据放在 URL 查询参数中。这会导致敏感数据暴露在服务器日志和浏览器历史中,且 URL 长度受限(通常 2048 字符)。评分请求必须使用 POST 方法,特征数据放在请求体(Request Body)中。

2.5 状态码在评分链路中的实际应用

在信用评分在线推理链路中,不同阶段可能返回不同的状态码。下表总结了常见场景及对应的处理建议:

场景 HTTP 方法 状态码 处理建议
正常评分 POST 200 OK 解析响应体中的 score 字段
请求参数缺失 POST 400 Bad Request 检查 features 字段是否完整,参考错误消息修正
认证令牌过期 POST 401 Unauthorized 刷新 access_token 后重试
API 调用超限 POST 429 Too Many Requests 等待 Retry-After 指定的秒数后重试
模型加载失败 POST 500 Internal Server Error 联系运维检查模型文件完整性
服务过载 POST 503 Service Unavailable 启用降级策略或等待自动恢复
幂等性在评分链路中的特殊处理:由于 POST 评分请求不幂等,为防止重复扣费或重复记录,建议客户端在请求头中携带 Idempotency-Key(幂等键)。服务端检测到相同幂等键时,返回首次处理的结果而非重新执行评分。