# context.network

`getJson()` 适合天气、汇率等 JSON 接口。清单中先声明 `network.getJson`，再用 `networkOrigins` 列出请求来源，例如 `https://api.example.com`。

```json
{
  "permissions": ["network.getJson"],
  "networkOrigins": ["https://api.example.com"]
}
```

这里的配置用于后台请求。超级块页面直接使用 `fetch()` 时，配置的是 [widgetConnectOrigins](./manifest.md#manifest-widgetconnectorigins)。

## getJson()

发送 GET 请求，并解析响应 JSON。

```ts
context.network.getJson<Result = unknown>(url: string): Promise<Result>
```

### 参数

| 名称 | 类型 | 说明 |
| --- | --- | --- |
| `url` | `string` | 完整的 HTTPS URL。来源在 `networkOrigins` 中，目标为公网地址。 |

### 返回值

Promise 解析为响应中的 JSON 值。请求最多等待 6500 毫秒，响应最多 128 KiB。接口应直接返回数据；重定向响应会使请求失败。

### 示例

```js
const weather = await context.network.getJson(
  "https://api.example.com/weather?city=shanghai"
);
return { temperature: weather.temperature };
```

### TUN / Fake-IP 代理兼容

桌面端用户可以在“设置 → 连接服务”中开启“兼容 TUN / Fake-IP 代理”，允许 `getJson()` 连接指定的代理虚拟 IPv4 网段。该选项默认关闭，预填网段为 `198.18.0.0/16`。支持一个 `/16` 至 `/32` 的 IPv4 CIDR，保存时会规范化网络地址，保存后对后续请求立即生效并保留到下次启动。

这是宿主用户控制的连接例外，插件不能自行开启或修改。开启后仍需声明 `network.getJson` 和 HTTPS 来源，仍验证 TLS 证书，并限制响应大小、超时及重定向。未授权的其他非公网地址继续被拦截。此选项不会启动或配置代理；代理关闭时应同时关闭此兼容选项。
