什么是 REST API?

 什么是 REST API?

REST(Representational State Transfer,表现层状态转移)是一种广泛应用于互联网 Web 服务的软件架构风格
而 REST API 就是基于这种风格设计的应用程序接口。它将系统中的所有事物(如诊断数据、故障码、ECU组件)都视为**“资源”(Resources)**,并为每个资源分配一个唯一的 URL(统一资源定位符)

🔑 REST API 的核心特征
  • 使用标准的 HTTP 方法:对资源的操作直接映射到 HTTP 的基础动词上。

  • 无状态性 (Stateless):每个请求都包含服务器理解并处理该请求所需的全部信息,服务器不保存客户端的上下文。

  • 数据格式通用:通常使用 JSON(JavaScript Object Notation)格式来传输数据,这种格式可读性极强,易于解析。


🔌 SOVD 中是如何使用 REST API 进行通信的?

在传统的汽车诊断中,如果想读取一个 DID,你需要发送一串十六进制报文(例如 UDS 的 22 EE 48)。而在 SOVD 的 REST API 架构中,一切都变成了发送一个 Web 请求

1. 资源定位 (URL)

SOVD 将车载诊断资源抽象为 URL 路径。例如:

  • 获取所有组件列表:http://<ECU_IP>:<Port>/sovd/v1/components

  • 读取 DID 0xEE48 的数据:http://<ECU_IP>:<Port>/sovd/v1/data/0xEE48

  • 获取故障码 (DTC) 列表:http://<ECU_IP>:<Port>/sovd/v1/faults

2. HTTP 动词与诊断操作的映射 🔄

REST API 的核心在于用不同的“动作”对同一个 URL 进行操作:

HTTP 方法 (Method)诊断对应操作实际应用示例 (以 VSPS_SOVD_DEMO 为例)
GET读取 资源信息GET /sovd/v1/data/0xEE49 👉 读取该可读写 DID 的当前值。
PUT / POST写入/更新 资源PUT /sovd/v1/data/0xEE49 (携带数据 { "value": 5 }) 👉 写入新值 5 到该 DID。
DELETE删除/清除 资源DELETE /sovd/v1/faults 👉 清除 ECU 中的所有故障码(等同于 UDS ClearDTC)。

3. 数据载体 (JSON Payload) 📦

无论是请求还是响应,数据都打包在 JSON 格式中。

  • 例如,写入数据时的请求体 (Request Body)

    JSON

    { "value": "05" } 
  • 读取故障码时的返回体 (Response Body)

    JSON

    { "faults": [ { "code": "0x4D2", "status": "active", "description": "DTC 0x4D2 test failed" } ] } 


🛠️ Bruno 与 SOVD 服务器的通信流程

Bruno 在这里充当了一个 API 客户端(Web Client) 的角色(类似于 Postman)。

  1. 建立连接:Bruno 运行在开发电脑上,通过以太网(通常是 TCP/IP)连接到目标 ECU(例如运行在 QEMU 虚拟机中的 Linux,IP 为配置中的 192.168.x.x,端口通常是 SOVD 服务监听的端口,如 8080 或 80)。

  2. 发送请求:当你在 Bruno 中点击 "Send" 按钮(例如 Read DID 0xEE48),Bruno 会构建一个标准的 HTTP 请求:

    http

    GET /sovd/v1/data/0xEE48 HTTP/1.1 Host: 192.168.40.20:8080 Accept: application/json 
  3. 服务器处理:部署在目标 ECU 上的 SOVD 服务器(包含在 VSPS 运行时中)收到这个 HTTP 请求,解析 URL,调用底层的自适应 AUTOSAR 诊断模块(如 ara::com 或 ara::diag)获取 CPU 负载。

  4. 返回响应:SOVD 服务器将结果包装成 HTTP 响应并发送回 Bruno:

    http

    HTTP/1.1 200 OK Content-Type: application/json { "value": "35" } 

    (35 代表当前的 CPU 负载值)


🛡️ 通信协议栈 (Protocol Stack)

整个通信过程是基于标准的互联网协议栈构建的,自底向上为:

物理介质 (车载以太网 / 电脑网线)→IP 协议 (IPv4/IPv6)→TCP 协议→HTTP 协议 (通常是 HTTP/1.1 或 HTTP/2)→SOVD 报文 (JSON)

  • 传输层协议TCP(确保诊断数据传输的可靠性,不丢包)。

  • 应用层协议HTTP(或加密的 HTTPS 用于安全诊断)。

⚠️ 安全防范 (Watch out for):由于基于标准的 HTTP/IP 协议,SOVD 诊断接口极易暴露在网络中。在量产车中,必须通过 TLS/HTTPS 进行通道加密,并配合 OAuth 2.0 等身份认证机制,以防黑客通过网络接口非法控制车辆诊断系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aFakeProgramer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值