介绍

Estimated reading time: 2 minutes

REST API 参数规范

协议规范概述

REST API通过HTTP使用JSON-RPC。 本文档主要解释每个API的请求/响应的JSON数据格式。 REST API根据功能分类为服务。 已定义的服务列表列在此页的底部。 服务名称用作REST API URL的一部分。

http://[Base URL]/[service name]

注意:

不接受在[服务器名称 ]后面加上”/”(斜杠)的url。

每个服务都应该是独占的,并且应该清楚API可以属于哪个服务。通过只搜索特定服务中的API列表,用户应该更容易搜索API。应该使用服务的URL调用属于服务的每个API。

基本 URL

[IP]/sony

av控制服务器的REST API URL示例 (IP: 192.168.0.1)

http://192.168.0.1/sony/avControl

版本控制

REST API规范由版本控制系统管理。每个API都有自己的版本。每个版本由两个用“.”(点)分隔的数字表示。

X.Y

X代表少校的版本。如果有很大的变化,这个数字就会增加。在这里,一个大的变化意味着协议规范的变化会影响服务上的定义。Y表示规范的次要版本。当API的定义改变时,这个数字将会增加。API定义表示JSON的格式。例如,如果在请求或响应中添加了成员,则必须增加版本。基本上,每个API都应该从1.0版本定义。客户端可以通过在请求中设置版本来调用特定版本的API。此版本信息只能用于区分API调用功能。如果客户端应用程序希望基于服务器应用程序/产品的生成更改其行为,客户端应用程序应该使用另一个API来检索生成。(例如:获取系统服务器上的内部信息。)

REST API类型

在REST API中,除了JSON类型之外,还定义了扩展类型。

类型 说明
一个true或false值被存储。  
在一个数组中存储多个true或false值。  
整数 存储一个从-2147483648到2147483647的整数。
整数数组 多个整数存储在一个数组中。
倍数 存储从-2.2250738585072014e-308到1.7976931348623157e+308的双数字。
双数组 多个双精度数存储在一个数组中。
字符串 一个字符串值。除非在每个API规范中都有特别提到,否则字符串是用UTF-8编码的。
字符串数组 多个字符串数据存储在一个数组中。

json-rpc和扩展/限制

JSON-RPC的使用带有一些限制和扩展。JSON-RPC是一种简单而轻量级的通信协议。

json-rpc请求示例

{"method": "echo", "params": ["Hello REST API"], "id": 1}

json-rpc反应示例

{"result": ["Hello REST API"], "error": null, "id": 1}

BRAVIA商用显示器对一些扩展和限制进行了调整,以保持api的简单易用。

  • 扩展
    • 如果请求成功,响应中将忽略“error”。但是,如果请求失败,则跳过“result”。
    • “error”成员必须是一个数组,定义为 [error_code, error_message]. “error_code” is an integer, “error_message” 是一个字符串. (解释了常见的错误代码和消息 这里. 每个API定义都解释了特定于API的错误代码。)
    • “error_message” 仅用于调试目的。客户端应用程序不能使用它来更改其行为,否则可能会使用相同的消息设置不同的消息 ““error_code”.
    • “版本”必须在请求中设置。通过设置版本,当服务器的行为改变时,客户端不会受到影响。版本可以设置为两个用点(例如)分隔的数字。“1.0”)。上面已经解释了版本控制系统。
  • 限制
    • Null valued parameters must be regarded as absent in the request/response, unless otherwise mentioned in each API specification.
    • “params”/”result”必须是一个固定长度的数组类型。(每个API规范都定义了长度。)
    • “id”是一个整数,不能使用“0”。“0”是一个特殊的数字系统。可以将id设置为 “1” - “2147483647” (0x00000001 - 0x7FFFFFFF).

REST API请求示例

{"method": "getMyName", "params": [{"key": 1116}], "id": 2, "version": "1.0"}

REST API响应示例(成功案例)

{"result": [{"name": "Alice"}], "id": 2}

REST API响应示例(失败案例)

{"error": [401, "Unauthorized"], "id": 2}

惯例

文档的内部描述约定如下所述。

多重性 1 : 需要一次
? : 零次或者更多
* : 零次或者更多
默认值 默认值是在缺少特定参数的情况下,数据接收方必须将其视为从发送方发送的值。
日期 本产品采用ISO 8601。
国家 本产品使用iso3166 alpha 2及其他编码。

身份验证

当前定义了以下身份验证级别。

认证级别 标准
私人 认证要求。api提供的信息不是个人信息(可以用来标识个人的信息),而是设备id或可能与设备用户不同的信息。
通用的 认证要求。控制设备或更改设备状态的api。
认证不是必需的。不符合上述条件的api。

身份验证级别是分层的,其中“私人”在层次结构中是最高的。 在层次结构中具有相同或更高访问级别的客户机应用程序可以访问API。 这意味着,如果用户对客户机应用程序接受级别为“private”的身份验证,那么在较低级别(如:通用的)也可用于客户端应用程序。 相反,如果用户对客户机应用程序接受较低级别的身份验证,那么客户机应用程序就不能使用级别较高的api。

REST API服务器应该遵循每个API部分中描述的这个级别。

请浏览 IP控制认证 在BRAVIA专业显示器上设置身份验证。通过“预共享密钥”进行身份验证后,即可使用“私人”和“通用的”身份验证级别的API。

REST-API HTTP Request Example (Pre-Shared Key: “1234”)

POST /sony/system HTTP/1.1
Host: 192.168.0.1
Accept: */*
Cache-Control: no-cache
Connection: close
Content-Type: application/json; charset=UTF-8
Pragma: no-cache
X-Auth-PSK: 1234
Content-Length: 70

{"method": "getPowerStatus", "params": [], "id": 50, "version": "1.0"}

局域网唤醒

请参照 局域网唤醒.

API服务列表

服务器 描述
向导 向导服务提供了一个API来检索服务器上受支持的服务列表。
应用程序控制 该服务处理用于启动应用程序本身的api以及与特定应用程序相关的操作。
音频 该服务处理与音量、音效等音频功能相关的api。
av内容 此服务处理设备对AV内容的输入和输出的整体控制,以及在设备上操作AV内容本身。
加密 该服务处理与加密相关的api。
系统 该服务处理与以下基本设备功能相关的api。
视频屏幕 该服务处理与视频屏幕功能相关的api。
Last modified: 8 Jan 2021