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 表示模型版本集合。
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(服务端错误):评分引擎内部异常、模型加载失败、数据库超时等。
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(幂等键)。服务端检测到相同幂等键时,返回首次处理的结果而非重新执行评分。