HTTP协议与REST架构

HTTP协议是Web的基础协议,定义了客户端和服务器之间的消息交换方式;REST是一种基于HTTP原则设计的Web API架构风格,强调简单性、可扩展性和统一接口。

  • by Saim-Hassan786
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 Saim-Hassan786/MCP-Model-Context-Protocol

使用说明

1. HTTP 核心概念

概述

该 超文本传输协议(HTTP) 是网络的基础协议。
它定义了客户端(通常是浏览器或应用程序)和服务器如何在互联网上交换消息。

基本原则

  • 客户端-服务器模型:
    客户端发送请求;服务器处理并返回响应。

  • 无状态性
    每个请求都是独立的——服务器不会在请求之间保留客户端上下文。 (状态必须由外部管理,例如,使用cookies、会话或令牌。)

  • 请求-响应周期:

    • 客户端使用HTTP发起请求 方法 (GET, POST, PUT, DELETE等。)
    • 服务器返回一个 状态码 和 响应体.
  • 方法(动词):

    方法 目的
    GET 提取数据
    POST 提交数据或创建资源
    PUT 更新或替换资源
    PATCH 部分更新资源
    DELETE 移除资源
  • 状态码:

    范围 含义 示例
    1xx 信息性 100 继续
    2xx 成功 200 OK
    3xx 重定向 301 永久移动
    4xx 客户端错误 404 未找到
    5xx 服务器错误 500 内部服务器错误

核心头文件

HTTP头部为请求和响应提供元信息,例如:

  • Content-Type身体格式(例如。, application/json)
  • Authorization凭证或令牌
  • Cache-Control缓存策略

2. REST架构

概述

REST(表述性状态转移) 这是一种将HTTP原则应用于设计Web API的架构风格。
由Roy Fielding的博士论文(2000年)所定义,REST强调 简洁性,可扩展性, 并且 统一的接口。

REST 约束

  1. 客户端-服务器(模式):
    用户界面(客户端)与数据存储(服务器)的分离。

  2. 无状态性:
    每个请求都必须包含所有必要信息——服务器不存储客户端上下文。

  3. 可缓存:
    响应必须明确其是否可缓存,以提高网络效率。

  4. 统一接口:
    使用标准的HTTP方法和媒体类型,实现一致且可预测的交互。

  5. 分层系统:
    客户端无需知道它们是直接连接到终端服务器,还是通过中间人连接。

  6. 可选:按需代码(Code-on-Demand):
    服务器可以通过发送可执行代码(例如,JavaScript)来扩展客户端的功能。

资源导向

  • 资源 是关键实体(例如,用户、订单、帖子)。
  • 每个资源都通过一个(标识符)来识别 URI(统一资源标识符) (例如。, /api/users/1)。
  • 表示;表述;代理(或代表) (通常为JSON)描述资源状态。

好处;利益

  • 简洁性和可扩展性
  • 明确使用HTTP方法和状态码
  • 易于集成和互操作

局限性

  • 无状态开销(必须重新发送上下文)
  • 不适用于实时或双向通信
  • 版本控制和部分更新的模糊性

3. JSON-RPC(远程过程调用协议)

概述

JSON-RPC(JSON远程过程调用) (JSON 远程过程调用) 是一种 轻便的 以JSON编码的远程过程调用协议。
它通过调用带有参数的命名方法,实现客户端与服务器之间的通信。

与REST不同,JSON-RPC侧重于 动作(方法) 而不是 资源。

核心特性

  • 与传输无关的(或传输中立的)
    通常通过HTTP或WebSockets运行,但不仅限于此。

  • 请求结构:

    {
      "jsonrpc": "2.0",
      "method": "subtract",
      "params": [42, 23],
      "id": 1
    }