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

# Hướng dẫn sử dụng

> Hướng dẫn sử dụng Locker Secrets Manager SDK cho .NET

## Cài đặt access key

SDK cần được cấu hình với khóa truy cập của bạn, khóa này có sẵn trong Bảng điều khiển Locker Secrets của bạn. Khởi tạo `secret_access_key` thành giá trị của nó. Bạn cũng cần thiết lập giá trị `api_base` (mặc định là `https://api.locker.io/locker_secrets`). Nếu bạn cần thiết lập các tiêu đề tùy chỉnh, bạn cũng cần thiết lập giá trị `headers` trong tham số `options`:

```csharp theme={null}
using Locker;

string accessKeyId = "YOUR_ACCESS_KEY_ID";
string secretAccessKey = "YOUR_SECRET_ACCESS_KEY";
string apiBase = "YOUR_API_BASE";
Dictionary<string, string> headers = new Dictionary<string, string>()
{
    { "CF-Access-Client-Id", "YOUR_CF_ACCESS_CLIENT_ID" },
    { "CF-Access-Client-Secret", "YOUR_CF_ACCESS_CLIENT_SECRET" }
};
LockerConfiguration.Instance.Init(
    accessKeyId: accessKeyId,
    secretAccessKey: secretAccessKey,
    apiBase: apiBase,
    headers: headers
);

// Thiết lập qua file .env
LockerConfiguration.Instance.Init(
    envPath: "YOUR_ENV_FILE_PATH"
);
```

***

## Per-request configuration

Tất cả các phương thức dịch vụ đều chấp nhận một đối tượng `RequestOptions` tùy chọn. Điều này được sử dụng nếu bạn muốn truyền khóa truy cập, tiêu đề cho mỗi phương thức, hoặc bạn muốn thiết lập loại giá trị trả về (loại mặc định là chuỗi, nếu bạn muốn loại đối tượng hãy sử dụng `IsJson=true`).

```csharp theme={null}
var requestOptions = new RequestOptions();
requestOptions.AccessKeyId = "ACCESS KEY ID";
requestOptions.SecretAccessKey = "SECRET ACCESS KEY";
requestOptions.ApiBase = "API BASE";
requestOptions.IsJson = true;
```

Bây giờ, bạn có thể sử dụng SDK để lấy hoặc đặt các giá trị.

***

## List secrets

Sử dụng phương thức `.List()` để lấy tất cả các secret trong dự án của bạn.

```csharp theme={null}
var service = new SecretService();
var secrets = service.List();
```

***

## Get giá trị secrets

Hàm này sẽ lấy giá trị bí mật bằng một khóa. Nếu khóa không tồn tại, SDK sẽ trả về `defaultValue`:

```csharp theme={null}
// Lấy giá trị secret bằng khóa.
// Nếu khóa không tồn tại, SDK sẽ trả về defaultValue
var secretValue = service.GetSecret(
    name: "REDIS_CONNECTION",
    defaultValue: "Default Value"
);
Console.WriteLine(secretValue);

// Lấy giá trị secret bằng khóa và tên môi trường cụ thể.
// Nếu khóa không tồn tại, SDK sẽ trả về defaultValue
secretValue = service.GetSecret(
    name: "REDIS_CONNECTION",
    environmentName: "staging",
    defaultValue: "Default Value"
);
Console.WriteLine(secretValue);

// Lấy giá trị secret bằng khóa.
// Nếu khóa không tồn tại, SDK sẽ ném ra ngoại lệ
var options = new SecretRetrieveOptions();
var requestOptions = new RequestOptions();
var secretValue = service.Get(
    name: "REDIS_CONNECTION",
    retrieveOptions: options,
    requestOptions: requestOptions
);
Console.WriteLine(secretValue);

// Lấy giá trị secret bằng khóa và tên môi trường cụ thể.
// Nếu khóa không tồn tại, SDK sẽ ném ra ngoại lệ
var options = new SecretRetrieveOptions();
var requestOptions = new RequestOptions();
var secretValue = service.Get(
    name: "REDIS_CONNECTION",
    environmentName: "staging",
    retrieveOptions: options,
    requestOptions: requestOptions
);
Console.WriteLine(secretValue);
```

***

## Tạo mới secrets

Dùng hàm `.Create()` để tạo mới secret:

```csharp theme={null}
var service = new SecretService();
var option = new SecretCreateOptions
{
    Key = "YOUR_NEW_SECRET_KEY",
    Value = "YOUR_NEW_SECRET_VALUE",
};
var newSecret = service.Create(option);
```

***

## Cập nhật secrets

Dùng hàm `.Modify()` để cập nhật giá trị secrets:

```csharp theme={null}
var service = new SecretService();
var option = new SecretUpdateOptions
{
    Key = "YOUR_UPDATE_SECRET_KEY",
    Value = "YOUR_UPDATED_SECRET_VALUE",
};

// Cập nhật secret bằng khóa
var updatedSecret = service.Modify(
    name: "YOUR_SECRET_KEY",
    updateOptions: option
);

// Cập nhật secret bằng khóa và tên môi trường cụ thể
var updatedSecret = service.Modify(
    name: "YOUR_SECRET_KEY",
    environmentName: "YOUR_ENV_NAME",
    updateOptions: option
);
```

***

## List environments

Dùng hàm `.List()` để lấy tất cả các môi trường trong dự án của bạn:

```csharp theme={null}
var service = new EnvironmentService();
var environments = service.List();
```

***

## Get environment by name

Để lấy một môi trường theo tên, sử dụng `.Get()`:

```csharp theme={null}
var service = new EnvironmentService();
var environment = service.Get(name: "YOUR_ENV_NAME");
Console.WriteLine(environment);
```

***

## Tạo mới environment

Để tạo mới môi trường, sử dụng `.Create()`:

```csharp theme={null}
var service = new EnvironmentService();
var option = new EnvironmentCreateOptions()
{
    Name = "YOUR_NEW_ENV_NAME",
    ExternalUrl = "YOUR_NEW_ENV_EXTERNAL_URL",
    Description = "YOUR_NEW_ENV_DESCRIPTION"
};
var newEnv = service.Create(option);
```

***

## Cập nhật environment

Để cập nhật `external_url` của môi trường bằng tên, sử dụng `.Modify()`:

```csharp theme={null}
environment = locker.modify_environment(name="staging", external_url="new.staging.host")
```
