> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 环境变量

> 为应用列出、添加、替换和删除环境变量。

```go theme={null}
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
```

环境变量被建模为 `squarecloud.EnvVars`，一个普通的 `map[string]string`。每个方法在操作完成后都会解析为完整的环境变量集 —— 所以你总能拿回一个最新的映射。

<Note>
  限制：每个应用最多 256 个变量，key 最长 1024 个字符，value 最长 4096 个字符。
</Note>

## 列出环境变量

```go theme={null}
envs, err := api.GetApplicationEnvs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for key, value := range envs {
	fmt.Printf("%s=%s\n", key, value)
}
```

## 添加或更新变量

`api.SetApplicationEnvs(appID, envs)` 将新变量**合并**到现有集合中。调用中未出现的现有键会被保留。

```go theme={null}
envs, err := api.SetApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{
	"DATABASE_URL": "postgres://...",
	"FEATURE_FLAG": "true",
})
if err != nil {
	panic(err)
}
```

## 替换整个环境变量集

`api.ReplaceApplicationEnvs(appID, envs)` 会覆盖每一个变量。

<Warning>
  任何未在调用中列出的变量都会被**移除**。当你只想添加或更新时请使用 `SetApplicationEnvs` —— `ReplaceApplicationEnvs` 会删除所有你遗漏的变量。
</Warning>

```go theme={null}
envs, err := api.ReplaceApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{
	"DATABASE_URL": "postgres://new-host...",
})
if err != nil {
	panic(err)
}
// FEATURE_FLAG is now gone
```

传入一个空 map 以清除所有变量：

```go theme={null}
_, err := api.ReplaceApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{})
```

## 删除变量

`api.DeleteApplicationEnvs(appID, keys)` 移除列出的键。未知的键会被静默忽略。

```go theme={null}
envs, err := api.DeleteApplicationEnvs("abc123def456abc123def456", []string{"FEATURE_FLAG"})
if err != nil {
	panic(err)
}
```
