این راهنما روش استفاده از SDKهای C# تولیدشده با Postman SDK Generator را توضیح میدهد. این SDKها برای پروژههای .NET آمادهاند و شامل client، serviceها، modelها، authentication، validation، retry و error handling هستند.
ساختار SDK C#
src/: کد اصلی SDK.Services/: service classها برای endpoint groupها.Models/: modelهای request/response و exceptionهای typed.Http/: HTTP client، pipeline، retry و transport.*.csproj: تنظیمات package، dependencyها و target framework.
اجرای نمونه SDK
هر SDK پوشه examples/ دارد. نمونه را اجرا کنید تا الگوی initialization و API call را ببینید.
cd examples
dotnet restore
dotnet run
using YourSdk;
var sdk = new YourSdkClient(new YourSdkConfig
{
ApiKey = "your-api-key",
BaseUrl = "https://api.example.com"
});
try
{
var user = await sdk.Users.GetUserAsync("123");
Console.WriteLine(user);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
نصب SDK C#
نصب با NuGet
اگر SDK را در NuGet منتشر کردهاید، آن را مثل هر package دیگری نصب کنید.
dotnet add package YourSdk
نصب از مسیر local
برای کار محلی، میتوانید project reference بدهید یا package محلی بسازید.
dotnet add reference ../path/to/your-sdk/YourSdk.csproj
dotnet pack -c Release
dotnet add package YourSdk --source ../path/to/your-sdk/bin/Release
انتشار در NuGet
برای انتشار، به حساب NuGet، API key، نام package یکتا و metadata کامل در فایل project نیاز دارید.
<PropertyGroup>
<PackageId>YourSdk</PackageId>
<Version>1.0.0</Version>
<Authors>Your Organization</Authors>
<Description>SDK for Your API</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>
dotnet restore
dotnet build -c Release
dotnet test
dotnet pack -c Release
dotnet nuget push bin/Release/*.nupkg --api-key YOUR_API_KEY --source https://api.nuget.org/v3/index.json
برای نسخه جدید، version را افزایش دهید و دوباره pack/push کنید.
بهترین کارها برای NuGet
- README و نمونه کد همراه package قرار دهید.
- از semantic versioning استفاده کنید.
- قبل از push، testها را اجرا کنید.
- Symbol package و source link را برای debugging بهتر در نظر بگیرید.
- انتشار را در CI/CD خودکار کنید.
Authentication
var sdk = new YourSdkClient(new YourSdkConfig
{
ApiKey = "your-api-key"
});
var sdk = new YourSdkClient(new YourSdkConfig
{
AccessToken = "your-bearer-token"
});
var sdk = new YourSdkClient(new YourSdkConfig
{
Username = "your-username",
Password = "your-password"
});
Asynchronous calls و cancellation
در C# بیشتر فراخوانیها async هستند و از Task استفاده میکنند. برای لغو request میتوانید CancellationToken پاس بدهید.
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
var user = await sdk.Users.GetUserAsync("123", cancellationToken: cts.Token);
Environment management
var sdk = new YourSdkClient(new YourSdkConfig
{
Environment = Environment.Production,
ApiKey = "your-api-key"
});
var customSdk = new YourSdkClient(new YourSdkConfig
{
BaseUrl = "https://custom.api.example.com",
ApiKey = "your-api-key"
});
Hierarchical configuration
تنظیمات میتوانند در سطح SDK، service، method و request اعمال شوند. تنظیم request خاصترین سطح است.
var requestConfig = new RequestConfig
{
Timeout = TimeSpan.FromSeconds(30),
BaseUrl = "https://legacy-api.example.com"
};
var user = await sdk.Users.GetUserAsync("123", requestConfig);
Error handling
SDK برای API errorها exceptionهای اختصاصی دارد. این exceptionها معمولا status code و response را نگه میدارند.
try
{
var user = await sdk.Users.GetUserAsync("123");
}
catch (ValidationException ex)
{
Console.WriteLine($"Validation failed: {ex.Message}");
}
catch (ApiException ex)
{
Console.WriteLine($"API error: {ex.Message}");
Console.WriteLine($"Status code: {ex.StatusCode}");
Console.WriteLine($"Response: {ex.Response}");
}
catch (Exception ex)
{
Console.WriteLine($"Unexpected error: {ex.Message}");
}
catch (ApiException ex) when (ex.StatusCode == 404)
{
Console.WriteLine("User not found");
}
Timeout و retry
var sdk = new YourSdkClient(new YourSdkConfig
{
ApiKey = "your-api-key",
Timeout = TimeSpan.FromSeconds(10),
Retry = new RetryConfig
{
Attempts = 3,
Delay = TimeSpan.FromSeconds(1),
MaxDelay = TimeSpan.FromSeconds(30),
BackoffFactor = 2
}
});
Validation
SDK constraintهای OpenAPI را قبل از ارسال request بررسی میکند. اگر validation شکست بخورد، exception شامل فهرست violationها دریافت میکنید.
Optional و nullable fieldها
در C# تفاوت بین property تنظیمنشده، مقدار null و مقدار واقعی برای APIهای update مهم است. SDK این تفاوت را در modelها و serialization تا حد ممکن حفظ میکند.
Resource cleanup
اگر SDK یا HTTP client شما disposable است، آن را با using یا lifecycle مناسب DI container مدیریت کنید.
using var sdk = new YourSdkClient(config);
منابع داخل SDK
- پوشه
documentation/برای serviceها و modelها. - پوشه
examples/برای نمونه اجرایی. - فایلهای
.csprojبرای تنظیم package و target framework. - وابستگیهای HTTP و JSON serialization بسته به خروجی generator.
منبع آموزشی: Postman Docs، بازنویسی و سادهسازیشده برای کاربران فارسیزبان.