RESTful API 概述
Juniper Mist 的 100% API 架构支持Juniper Mist门户中的所有可见功能。你可以在门户中执行的任何作,都可以使用 API 大规模实现自动化。表述性状态转移 (REST) 是具有统一接口的无状态客户端/服务器体系结构。由于机器对用户界面没有用处,因此 API 允许机器以定义且更快的方式相互通信。API 还使您和其他用户能够创建自己的与系统和应用程序交互的方式。您甚至可以创建自定义功能。
Juniper Mist API 可供任何拥有 Juniper Mist 帐户的客户使用。
另请参阅 Mist API 参考。这包含面向开发人员的其他文档,以及测试 API 调用的功能。
Juniper Mist API 架构
Juniper Mist 使用 REST API,这些 API 使用 HTTP 方法(GET、POST、PUT 和 DELETE)以 JavaScript 对象表示法 (JSON) 格式传输数据。
RESTful API 请求
使用 RESTful API 遵循与开发中使用的 CRUD(创建、读取、更新、删除)方法类似的做法。这是处理数据时使用的四个基本作或功能。
CRUD | HTTP/REST |
---|---|
创造 | 发布 |
读 | 获取 |
更新 | 放 |
删除 | 删除 |
API 端点 URL 格式
API 端点 URL 由两部分组成:
-
API 主机(或端点) - 与您的Juniper Mist组织关联的全局区域的端点。这些终端节点列在 API 终端节点和全局区域中。
-
函数 (Function) - API 端点之后的所有内容都表示 API 将调用的函数。
例
https://{api-host}/api/v1/sites/{site_id}/stats/devices/{device_id}
。
https://api.mist.com/api/v1/sites/13b0ee00-121a-456e-84e0-ead3008bc2f2/stats/devices/00000000-0000-0000-1000-d420b08532eb
重复使用代码块时,请将占位符值替换为实际值,例如 API 令牌、组织 ID、站点 ID、AP 名称等。
{api-host} 后面的所有内容都是函数。该调用进入全局云,并请求指定站点上指定设备的统计信息。
下一节将更深入地了解构成 API 调用的结构。
API 调用结构
下图是 API 调用和组成它的不同组件的示例。
API 调用组件 |
描述 |
---|---|
HTTP 方法 |
|
主机(或 API 端点) |
确定要使用的 Mist 云(全球 01 号、EMEA 01 号等)。与您的Juniper Mist组织关联的全球区域的终端节点。 请参阅 API 终端节点和全局区域。 |
版本 |
要使用的 API 版本(目前,所有 API 都使用 v1)。 |
范围 |
指示执行请求的级别。示例包括 msp、org、site、self、register、installer、const 等。 |
范围 ID |
确定要使用的作用域。 |
对象 |
要使用的对象类型(设备、WLAN 等)。 |
对象 ID |
标识要请求的对象。 |
要在 REST API 上执行上述任何 REST 命令(POST、GET、PUT、DELETE),您需要满足每个请求中的一些要求,例如:
-
认证:
-
HTTP 报头:此报头指定内容和授权类型,如下所示:
-
对于Juniper Mist,内容类型始终为 application/json。
-
授权可以是令牌或 Cookie(包括 CSRF 令牌和会话 ID)。
-
-
与您的Juniper Mist组织关联的全球区域的终端节点。 请参阅 API 终端节点和全局区域。
下表提供了构成 RESTful API 请求的不同部分的示例。
CRUD作 |
HTTP 标头身份验证 |
端点 URL |
有效负载 (JSON) |
---|---|---|---|
获取 |
API 令牌 |
https://api.mist.com/api/v1/sites/:site_id/wlans |
|
删除 |
CSRF 令牌、会话 ID |
https://api.mist.com/api/v1/sites/:site_id/wlans/:wlan_id |
|
发布 |
CSRF 令牌、会话 ID |
https://api.mist.com/api/v1/orgs/:org_id/inventory |
{[“<claim_code>”]} |
放 |
API 令牌 |
https://api.mist.com/api/v1/sites/:site_id/wlans/:wlan_id |
{“ssid” : “新名称”} |
JSON 有效负载
不同的函数需要 JSON 有效负载中的不同元素。您可以在 API 文档中查看所需的详细信息。
下面是一个示例 API 调用和响应(JSON 有效负载)。
API 调用:
POST /api/v1/orgs/{org_id}/rftemplates
响应(JSON 有效负载):
{ "name": "new-rf-template", "org_id": "a97c1b22-a4e9-411e-9bfd-d8695a0f9e61", "band_5": { "allow_rrm_disable": false, "ant_gain": 0, "channels": [], "disabled": false, "power_max": 17, "power_min": 8 }, "band_24": { "allow_rrm_disable": false, "ant_gain": 0, "channels": [], "disabled": false, "power_max": 17, "power_min": 8 }, "country_code": "CA" }
API 速率限制
Juniper Mist 将 API 调用次数限制为每小时 5000 次。如果您每小时需要拨打超过 5,000 个电话, 请创建支持工单。
为了防止暴力攻击,登录 API (/api/v1/login) 在三次登录失败后会受到速率限制。
API 身份验证选项
Juniper Mist API 允许使用三个选项来请求身份验证:
-
基本身份验证 - 令牌
-
像密码一样保护它。
-
有关创建 API 令牌的说明,请参阅 创建 API 令牌。
-
-
HTTP 登录 — 用户名和密码
-
就像仪表板登录一样
-
可以是双因素身份验证。
-
-
OAuth2
-
帐户必须链接到 OAuth 提供程序。
-
需要浏览器访问权限。
-
有关身份验证的更多信息,请参阅 Mist API 参考。
一个简单的 API 示例
Django API 界面是一个基于 Web 的界面,您可以在其中执行 API 中的 CRUD作。请参阅 使用 Django Web 界面进行 API 更改。
使用 Django API 接口,您可以进行第一次 API 调用。登录Mist后,使用同一浏览器打开一个新窗口,然后输入 URL https://api.mist.com/api/v1/self
。这是全局 01 云的 URL。如果您使用的是其他云,则此 URL 会有所不同。
这相当于进行此 API 调用 GET /api/v1/self
。
结果如上所示,显示了为您关联的组织和站点分配给您的权限。