# Configuration और Environments — .NET Core: वेब API बनाएँ, टेस्ट करें और शिप करें

Source: https://www.geekswithgeeks.com/hi/dotnet-core/api-configuration

> appsettings.json, environment variables और user secrets से settings पढ़ें।

## Settings की परतें

Configuration परतों में है: `appsettings.json`, फिर `appsettings.{Environment}.json`, फिर user secrets (Development में), फिर environment variables, फिर command-line arguments। बाद वाले स्रोत पहले वालों को override करते हैं।

## Values पढ़ना और सेट करना

Nested keys कोड में `:` और environment variable के नाम में `__` से लिखी जाती हैं। `dotnet user-secrets` development के secrets को repo से बाहर रखता है।

```csharp
// appsettings.json: { "Shop": { "PageSize": 20 } }
var pageSize = builder.Configuration.GetValue<int>("Shop:PageSize");

// Shell:
//   dotnet user-secrets init
//   dotnet user-secrets set "ConnectionStrings:Default" "Server=...;Password=..."
//   export Shop__PageSize=50   # overrides appsettings.json
```

## Secrets कभी commit न करें

Passwords, API keys और signing keys `appsettings.json` में नहीं रखे जाते। Local में user secrets और production में environment variables या secret manager उपयोग करें।

**Quiz:** एक ही key appsettings.json और environment variable दोनों में हो तो कौन जीतता है?

- [ ] appsettings.json
- [ ] ऐप जिसे पहले पढ़े
- [ ] कोई नहीं; error आता है
- [x] Environment variable

*Answer:* Environment variable. Environment variables JSON files के बाद जुड़ते हैं, इसलिए वे उन्हें override करते हैं।
