ASP.NET کور رابطہ فارم انٹیگریشن (کم سے کم APIs اور ریزر)
ASP.NET Core Minimal APIs یا Razor Pages سے IHttpClientFactory، سرور سائیڈ API کیز، اور خودکار آئیڈیمپوٹینسی کیز کا استعمال کرتے ہوئے رابطہ فارم کی جمع آوریوں کو محفوظ طریقے سے Lugatu پر بھیجیں۔
1. IHttpClientFactory کے ساتھ کم سے کم API اینڈ پوائنٹ
ASP.NET Core Minimal APIs رابطہ فارم جمع کروانے اور IHttpClientFactory اور ایک Idempotency-Key کا استعمال کرتے ہوئے محفوظ طریقے سے Lugatu کو بھیجنے کا صاف، اعلیٰ کارکردگی کا طریقہ فراہم کرتے ہیں۔
using System.Net.Http.Headers;
using System.Text.Json;
var builder = WebApplication.CreateBuilder(args);
// Register resilient Lugatu HTTP client
builder.Services.AddHttpClient("Lugatu", client =>
{
client.BaseAddress = new Uri("https://www.lugatu.com");
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", builder.Configuration["Lugatu:ApiKey"]);
});
var app = builder.Build();
app.MapPost("/api/contact", async (ContactRequest request, IHttpClientFactory clientFactory, IConfiguration config) =>
{
// 1. Silent rejection for automated bot traps
if (!string.IsNullOrEmpty(request.Gotcha))
{
return Results.Ok(new { success = true });
}
var client = clientFactory.CreateClient("Lugatu");
var formId = config["Lugatu:FormId"];
var payload = new
{
fields = new Dictionary<string, string?>
{
["name"] = request.Name,
["email"] = request.Email,
["message"] = request.Message,
}
};
using var message = new HttpRequestMessage(HttpMethod.Post, $"/api/v1/forms/{formId}/submissions")
{
Content = new StringContent(JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json")
};
// Ensure at-most-once delivery with Idempotency-Key
message.Headers.Add("Idempotency-Key", Guid.NewGuid().ToString());
var response = await client.SendAsync(message);
if (!response.IsSuccessStatusCode)
{
return Results.StatusCode((int)response.StatusCode);
}
return Results.Ok(new { success = true });
});
app.Run();
public record ContactRequest(string Name, string Email, string Message, string? Gotcha);
2. appsettings.json میں کنفیگریشن
ASP.NET کور کنفیگریشن فراہم کنندگان کا استعمال کرتے ہوئے اپنے Lugatu اسناد کو محفوظ طریقے سے اسٹور کریں۔ پیداوار میں، Azure Key Vault، AWS Secrets Manager، یا ماحولیاتی متغیرات کا استعمال کریں۔
{
"Lugatu": {
"FormId": "YOUR_FORM_GUID",
"ApiKey": "lug_live_your_secret_server_key"
}
}
3. ریزر پیجز کنٹرولر کا نفاذ
روایتی ملٹی پیج ASP.NET Core MVC یا Razor Pages ایپس کے لیے، ASP.NET کور بلٹ ان اینٹی فورجری ٹوکن تصدیق سے مستفید ہوتے ہوئے OnPostAsync کے اندر فارم جمع کروائیں۔
public class ContactModel : PageModel
{
private readonly IHttpClientFactory _clientFactory;
private readonly string _formId;
public ContactModel(IHttpClientFactory clientFactory, IConfiguration config)
{
_clientFactory = clientFactory;
_formId = config["Lugatu:FormId"]!;
}
[BindProperty]
public ContactInput Input { get; set; } = new();
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid || !string.IsNullOrEmpty(Input.Gotcha))
{
return Page();
}
var client = _clientFactory.CreateClient("Lugatu");
var content = new StringContent(
JsonSerializer.Serialize(new { fields = Input }),
System.Text.Encoding.UTF8,
"application/json");
content.Headers.Add("Idempotency-Key", Guid.NewGuid().ToString());
var res = await client.PostAsync($"/api/v1/forms/{_formId}/submissions", content);
if (res.IsSuccessStatusCode)
{
return RedirectToPage("/ContactSuccess");
}
ModelState.AddModelError(string.Empty, "Unable to deliver inquiry. Please try again.");
return Page();
}
}
سیکورٹی اور توثیق انویرینٹ
تکنیکی تبدیلی: سرور سے سرور API کیز (lug_live_...) کو بیک اینڈ پر سختی سے رکھنا چاہیے۔ انہیں appsettings.json یا سیکریٹ والٹس میں اسٹور کریں۔ کلائنٹ براؤزرز کو کبھی بھی لائیو کیز منتقل نہ کریں۔
ٹربل شوٹنگ اور عام ادخال کی خرابیاں
اس بات کی تصدیق کریں کہ آپ کی API کلید lug_live_ سے شروع ہوتی ہے اور اسے Authorization: Bearer ہیڈر میں پاس کیا جاتا ہے۔ یقینی بنائیں کہ API کلید کا تعلق ورک اسپیس سے ہے جس میں ہدف شدہ فارم ID ہے۔
اکثر پوچھے گئے سوالات
مجھے نیا HttpClient مثال بنانے کے بجائے IHttpClientFactory کیوں استعمال کرنا چاہئے؟
IHttpClientFactory ساکٹ پولنگ کا انتظام کرتا ہے اور ASP.NET کور ایپلی کیشنز میں بھاری بوجھ کے تحت ساکٹ کی تھکن کو روکتا ہے۔
اپنا فارم اینڈ پوائنٹ بنانے کے لیے تیار ہیں؟
سیکنڈوں میں مفت شروع کریں۔ کریڈٹ کارڈ کی ضرورت نہیں ہے۔