docs/CN/LLM-Hub/RESTful-API/RESTful-API.md

52 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

RESTful APIRepresentational State Transfer 风格的接口)是一种常见的 Web 服务设计规范,其核心思想和特点包括:
1. **资源Resource为中心**
- 把系统中的一切“对象”都看作资源,每个资源通过一个唯一的 URI路径来标识。
- 例如:`/models` 可能对应“模型列表”资源,`/models/123` 对应“ID 为 123 的模型”资源。
2. **使用 HTTP 方法表示操作**
- **GET**:读取资源(不应改变服务器状态),
- **POST**:创建资源,
- **PUT/PATCH**:更新资源,
- **DELETE**:删除资源。
这样可以让接口语义清晰、与 HTTP 协议天然契合。
3. **无状态性Stateless**
- 每一次请求都包含完成该请求所需的所有信息,服务端不在请求之间保留客户端状态。
- 优点是易于扩展与负载均衡;缺点是每次请求都要重复认证/传递上下文。
4. **表现层Representation**
- 客户端与服务端通过“表现层”交换资源状态,通常是 JSON、XML 或其他格式。
- 比如 `GET /models/123` 返回如下 JSON
```json
{
"id": 123,
"name": "gpt-4",
"status": "deployed"
}
```
5. **超媒体驱动HATEOAS可选**
- 在响应中带上“链接”links告诉客户端可以做哪些后续操作比如
```json
{
"id": 123,
"links": [
{ "rel": "update", "href": "/models/123", "method": "PUT" },
{ "rel": "delete", "href": "/models/123", "method": "DELETE" }
]
}
```
- 这样客户端无须硬编码所有路径,能动态发现可用操作。
---
### 在 LLMHub 中的应用
在我们的 PRD 里,“统一抽象接口层”采用 RESTful API 设计,并以 OpenAPI 3.0 规范来描述,这意味着:
- 每个大模型相关的功能(列出模型、部署模型、调用模型)都被定义为一种资源操作;
- 开发者通过标准的 HTTP 方法和约定好的路径,就能对接各种底层模型平台;
- 文档会自动生成Swagger UI并确保接口清晰、一致且易于测试。
这样,无论后端具体集成了哪家大模型服务,上层调用逻辑都保持不变——真正达到了“屏蔽底层差异、统一使用体验”的目标。